【发布时间】:2012-04-16 21:15:04
【问题描述】:
我正在为 Windows Phone 7 开发一个 PhoneGap 应用程序,并在那里进行一些 jQuery AJAX 调用。具体来说,我将登录 POST 数据发送到远程脚本。
当我们的脚本在 POST 数据中接收到这些登录凭据时,响应是 JSON 格式,否则它会返回完整登录页面的 HTML。
我很确定:
- 我已将域列入白名单
- 我已使用 $.support.cors = true 和 $.mobile.allowCrossDomainPages = true 允许跨域请求
- 设置 cache: false 不是问题(已经玩过)
- 将 数据 作为 JSON 对象传递也不起作用
- 使用 contentType 值没有帮助
当我尝试 POST 方法时,没有将发布数据传输到实际脚本。
我找到了一个链接到桌面 Internet Explorer 的 old similar problem。但是,就我而言,我根本无法发布数据 - 第一次尝试,第二次或任何其他后续尝试都没有。
$.ajax({
url: "http://www.mypage.com/",
type: "post",
data: "login="+$('#login').val()+"&pw="+$('#pw').val(),
dataType: "json",
cache: false,
success: function(loginReturn, status, request) {
// all ok - we never get here on Windows Phone 7
}
});
【问题讨论】:
-
是的,错误回调触发并返回“无效字符”解析错误,因为预期的输出是 JSON,但返回的是整个 HTML 页面,因为在服务器端没有找到 POST 数据
-
尝试将数据作为json对象传递
-
没有帮助,不过感谢您的提示 ;-)
-
如果您登录失败返回 html 显然您在 json 解析时遇到错误,返回一个 json 错误对象或更改 dataType
-
好的,当没有数据发布时,不要被我显示的内容分心 - 问题是 POST 数据根本没有通过 AJAX 请求传输......对此有什么想法吗?
标签: jquery windows-phone-7 post cordova