Ajax发布不起作用 - Jquery Phonegap Android

时间:2012-11-08 12:49:58

标签: android jquery ajax cordova

大家好,并且提前告诉我们。 我正在使用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中,当我点击提交时我不断收到此错误:

JSCallback Error: Request failed with status 0 at file:///android_asset/www/js/cordova-2.1.0.js:3743

更重要的是,我忘了添加,是我可以打开网址作为模拟器的链接。它工作正常。

* 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很多..

3 个答案:

答案 0 :(得分:3)

最后,经过4-5天的搜索,我找到了一些东西......我刚刚在ajax回调之后添加了return false。我改变了代码如下:

$('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 :(得分:3)

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

我已经在phonegap中测试了它,它运行正常。

答案 2 :(得分:2)

我认为原因是由“表单提交”引起的。你把你的ajax代码放在哪里了?在index.js?

您获得的异常意味着“0 == Page正在卸载”。

在你的情况下,我猜你把你的ajax代码放在与表单在同一页面的index.js中。当您提交表单时,浏览器开始卸载当前页面并加载页面并提供表单提交结果。所以你的ajax代码得到了“页面正在卸载”的异常。

尽量不要使用表单提交。