首先发布在这里。我认为这是一个与安全相关的问题,但老实说我不确定。
我正在使用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
//编辑:修正了网址拼写错误。添加了成功的响应数据。
答案 0 :(得分:2)
在您的代码中,您错过了url属性的请求引用。
假设这只是一个错字,您是否尝试在桌面游戏中切换用户代理? (必须启用“开发人员菜单”项)。将您的用户代理切换到“iPhone”,看看是否得到空响应。
答案 1 :(得分:2)
好的,问题是我是个白痴。我正在测试的域名是一个子域名,除此之外......它不是一个公共站点。我的机器上的主机文件中有IP地址,但(当然)不在我的iPhone上。
当我尝试在不同的/公共网站上进行测试时,我们在这里......现在我在设备上看到了数据。
非常感谢Haochi和typeof,以获得您的快速和多次回复。在我发布问题的所有其他网站中,你们发布了一些想法非常快。特别是,它是关于域的问题,让我思考并意识到错误的来源。
我现在感觉我一直在试图用我的钥匙进入我的房子......我一直站在错误的房子前面。令人难以置信的尴尬。但我现在看到了数据,这就是最重要的。
再次感谢!