2012-03-10 116 views
3

我有一个简单的html登录表单,使用phonegap框架部署在Xcode上。使用Phonegap的IOS上的Jquery ajax请求 - Ajax不工作

当submitLogin按钮被点击后,我使用ajax请求发送登录凭证来验证登录。 这是我的JavaScript函数来处理登录:

function submitLoginForm (login_id, login_pass){ 
    //here we need to communicate with the php files in the server 
    console.log ("debug 1 "); 
    $.ajax({ 
     type: "POST", 
     url: "http://192.168.1.9/serverapp/loginHandler.php", 
     data: "login_id=" + login_id + "&login_password=" + login_pass, 
     success: function(loginStatus){ 
       navigator.notification.alert ("login request successfully sent"); 
       console.log ("debug 2"); 
       if (loginStatus == "success"){ 
       console.log ("debug 3 "); 
       location.href = "main.html"; 
       } 
       else{ 
       console.log ("debug 4 "); 
       location.href="index.html?errcode=1"; 
       } 

     } 
    }); 

    console.log ("debug 5 "); 
} 

提交登录表单之后,我看到控制台只印“调试1”的消息。在这种情况下可能会出现什么问题?如果ajax请求失败,它仍然应该打印“调试5”消息,但它没有打印任何内容,只是跳过整个事件,除了第一条调试消息。

我可以从我的浏览器访问php网址,所以我确信问题不在于php代码。我一直试图花费几个小时而没有结果。 Phonegap IOS框架有没有类似的问题,你是如何解决它的?

+0

控制台日志中是否存在其他错误? – 2012-03-10 01:42:09

+0

不,控制台日志只显示以下消息:2012-03-09 20:48:18.453 TestProject_IOSClient [3855:207] [INFO] debug 1 – 2012-03-10 01:45:46

回答

9

问题解决。

我使用一个外部的jQuery文件从http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

而且它似乎外部jQuery的URL由iPhone模拟器受阻,所以我必须把该URL在白名单中。

步骤:

  • 在您的Xcode的PhoneGap项目中,浏览到资源文件夹。
  • 转到支持文件目录,然后编辑PhoneGap.plist文件。
  • 在外部主机列表中,添加您想要访问的所有外部URL(包括外部jQuery url以及您在其中使用的其他任何url)。

我希望这对其他遇到与我相同问题的开发者会有帮助。

+0

嗨,我在Cordova.plist文件中面临同样的问题.. 我是像你一样引用jquery.min.js。把它不工作,,我正在使用电话差距1.5。我可以在我的项目中增加额外的东西,以便我可以拨打外部电话。 Thanks in adv – 2012-04-02 13:09:09