Сообщение 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'=>'my_email@example.com' ); 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 много ..

Solutions Collecting From Web of "Сообщение Ajax не работает – JQuery Phonegap Android"

Наконец, после 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; }); 

Теперь единственная проблема заключается в том, что она не сбрасывает страницу при успешном выполнении … но один шаг вовремя …

Шаг 1 : вам нужно включить два заголовка в ваш php-файл

 header('Content-Type: application/json'); header("Access-Control-Allow-Origin: *"); 

Шаг 2 : Включите библиотеку cdn jquery на странице индекса.

Шаг 3 : используйте скрипт для успешной публикации формы

 <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> 

Я тестировал его в телефоне, и он работает нормально.

Я думаю, что причина вызвана «представлением формы». Где вы разместили свой аякс-код? В index.js?

Исключение, которое вы получили, означает «0 == Страница разгрузки».

В вашем случае, я думаю, вы помещаете свои ajax-коды в index.js, который находится на той же странице с формой. Когда вы отправляете форму, браузер начинает выгружать текущую страницу и загружать страницу с результатами отправки формы. Таким образом, ваши коды ajax получают исключение «Страница разгружается».

Старайтесь не использовать отправку формы.