【发布时间】:2011-03-22 19:41:45
【问题描述】:
第一篇文章在这里。我有一个我认为与安全相关的问题,但老实说我不确定。
我正在使用 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 中进行测试时,我得到的响应与我在设备上所做的相同。这可能是由于“同源政策”造成的吗?
我已经尝试将我的问题发布到 PhoneGap Google Group、jQuery 论坛,但并没有得到太多的爱。我将不胜感激任何想法/建议,并希望这里的其他人以前遇到过这种行为。
谢谢! -费利克斯
//编辑:修正 url 拼写错误。添加成功响应数据。
【问题讨论】:
-
这可能不是安全问题,因为如果是这样,它就不会执行您的
success函数,但当然您可能想从url中取出“mydomain.com”并进行测试以防万一。我很困惑为什么要将msg作为json对象返回到字符串中,但是...然后您说您说它包含一些“ XML”...:-/ -
嗨 Haochi - url 必须是绝对的,因为这最终将是一个独立的应用程序。我添加了“msg”变量,以便查看返回的数据。
-
您能否更新您的帖子以包含返回值?
-
更新了!我正在访问网络服务并使用提供的文档。虽然我的 dataType 是 JSON,但我得到的实际上是一个字符串格式的 XML。仅供参考,我尝试将 dataType 更改为各种内容(html、文本、xml、脚本),但没有成功。
-
嗯,你应该转换你的输出服务器端。简单地告诉 jQuery 你想要 JSON 格式并不会神奇地输出 JSON。