jQuery Ajax响应:在浏览器中工作,在移动设备上为空

时间:2011-03-22 19:41:46

标签: jquery ajax

首先发布在这里。我认为这是一个与安全相关的问题,但老实说我不确定。

我正在使用PhoneGap构建移动应用程序(基本上是带有jQuery / CSS的HTML页面)。我打电话给.asmx网络服务,如下:

$.ajax({ 
    type: "POST", 
    url: "http://mydomain.com/customPage.asmx/LoginMember", 
    data: memberData, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
            alert("This is my message: " + msg); 
    }, 
    error: authenticateFailed 
    }); 

当我使用我的桌面(Mac,Safari)测试时,呼叫成功。我的'msg'变量包含一些字符串格式的XML。都好。以下是呼叫成功且数据存在时我的警报显示的内容:

<User><Membership><Item>MemberLoginStatus</Item><Type>XML</Type><Status>1</Status><Description>Succeeded</Description></Membership></User>

但是当我使用相同的代码将其移动到我的设备(iPhone,PhoneGap)上时,会发生其他事情。调用仍然成功,我的成功函数触发,但我的'msg'变量没有数据。我收到此警报:“这是我的消息:null”

我已经尝试过对此进行研究,但似乎无法确定问题的实际来源。我不认为这是我的代码,但我不确定它是否与jQuery,PhoneGap或其他完全不同。

截至目前,我最好的猜测是某种安全问题。我注意到,当我在Chrome中测试时,我得到了与我在设备上相同的“null”响应。这可能是由于“同源政策?”

我已经尝试将我的问题发布到PhoneGap Google Group,即jQuery论坛,并且没有太多的爱。我非常感谢任何想法/建议,并希望其他人在此之前遇到过这种行为。

谢谢! -Felix

//编辑:修正了网址拼写错误。添加了成功的响应数据。

2 个答案:

答案 0 :(得分:2)

在您的代码中,您错过了url属性的请求引用。

假设这只是一个错字,您是否尝试在桌面游戏中切换用户代理? (必须启用“开发人员菜单”项)。将您的用户代理切换到“iPhone”,看看是否得到空响应。

答案 1 :(得分:2)

好的,问题是我是个白痴。我正在测试的域名是一个子域名,除此之外......它不是一个公共站点。我的机器上的主机文件中有IP地址,但(当然)不在我的iPhone上。

当我尝试在不同的/公共网站上进行测试时,我们在这里......现在我在设备上看到了数据。

非常感谢Haochi和typeof,以获得您的快速和多次回复。在我发布问题的所有其他网站中,你们发布了一些想法非常快。特别是,它是关于域的问题,让我思考并意识到错误的来源。

我现在感觉我一直在试图用我的钥匙进入我的房子......我一直站在错误的房子前面。令人难以置信的尴尬。但我现在看到了数据,这就是最重要的。

再次感谢!