Сообщение Ajax не работает - JQuery Phonegap Android
Привет всем и спасибо заранее.
Я использую Phonegap 2.1.0.
В белом списке все принято..
**<access uri="*" subdomains="true" />
<access origin=".*" subdomains="true"/>**
Я использую эту функцию для вызова удаленного php файла с моего веб-сервера университета:
var postData = $(this).serialize();
$.ajax({
type: 'POST',
url: 'http://--/smartphone/login.php',
dataType : 'json',
data: postData,
success: function(data){
alert("good");
},
error: function(){
alert('problem!');
}
});
Файл php предназначен только для таких аргументов:
<?php
header('Content-Type: application/json');
$sample = array(
'name'=>'My Name',
'email'=>'[email protected]'
);
echo json_encode($sample);
?>
Но запрос ajax не происходит.. в eclipse я продолжаю получать эту ошибку, когда я нажимаю submit:
JSCallback Error: Request failed with status 0 at file:///android_asset/www/js/cordova-2.1.0.js:3743
что более того, я забыл добавить, заключается в том, что я могу открыть URL-адрес в качестве ссылки с эмулятора. Он отлично работает.
* html код: *
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/index.css" />
<script type="text/javascript" charset="utf-8" src="js/cordova-2.1.0.js"></script>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<title>Smart Greenhouse</title>
</head>
<body>
<div id="container">
<img src="css/images/smart_green_house.png" class="logo" alt="l1ogo" />
<form id="login_form" class="first_display" >
<label class="title"> E-mail:</label>
<input id="1" type="email" class="input" size="45" name="email" />
<label class="title"> password:</label>
<input id="2" type="password" class="input" size="45" name="password" />
<input id="3" class="submit_type" type="submit" value="login" />
</form>
</div>
</body>
</html>
Я искал, я думаю, почти вся сеть... 2 дня поиска... все было протестировано..
Thanx много..
Ответы
Ответ 1
Наконец, после 4-5 дней поиска... что-то получилось для меня.. Я только добавил return false
после обратного вызова ajax. И я изменил код следующим образом:
$('form').submit(function(e){
if (password_ok==1 && email_ok==1)
{
var postData = $(this).serialize();
$.ajax({
type: 'POST',
url: 'http://mysite.xx.x/smartphone/login.php',
dataType : 'json',
data: postData,
success: function(data){
alert(data);
},
error: function(){
alert('error!');
}
});
}
else
{
e.preventDefault();
if (email_ok==2)
{
$("#1").css("border-color","red");
$("#1").css("background-color","#FFD8CE");
}
if (password_ok==2)
{
$("#2").css("border-color","red");
$("#2").css("background-color","#FFD8CE");
}
}
return false;
});
Теперь единственная проблема в том, что она не reset на странице, когда она успешна... но один шаг в момент...
Ответ 2
Шаг 1: вам нужно включить два заголовка в ваш php файл
header('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");
Шаг 2. Включите библиотеку cdn jquery на странице индекса.
шаг 3: используйте script, чтобы отправить форму успешно
<script type="text/javascript">
$(document).ready(function() {
$('form').submit(function(e) {
var postData = $(this).serialize();
$.ajax({
type : 'POST',
url : 'http://www.yoururl/test.php',
dataType : 'json',
data : postData,
success : function(data) {
alert(data);
},
error : function() {
alert('error!');
}
});
return false;
});
});
</script>
Я тестировал его в телефоне, и он работает нормально.
Ответ 3
Я думаю, причина объясняется "представлением формы". Где вы разместили свой код ajax? В index.js?
Исключение, которое вы получили, означает "0 == Страница - разгрузка".
В вашем случае, я думаю, вы помещаете свои ajax-коды в index.js, который находится на той же странице с формой. Когда вы отправляете форму, браузер начинает выгружать текущую страницу и загружать страницу с результатами отправки формы. Таким образом, ваши коды ajax получают исключение "Страница выгружается".
Попытайтесь не использовать представление формы.