【发布时间】:2014-01-09 14:41:19
【问题描述】:
我正在使用 ajax 调用休息服务。
这一切在 Chrome 上运行良好,但从 IE 10 运行时,ajax 调用失败。
我尝试打印错误消息,但没有得到启发,只是说“未定义”。
ajax 请求永远不会发送到服务器。 我看到帖子谈论 IE 与 json 的问题,但还没有找到正确的解决方案。
更多信息(不知道是否相关):如果我尝试通过 IE 10 访问服务 url(将 url 放入浏览器中),则不会显示 JSON。而是询问我是否要打开一个文件。
另外:请求是从 html 文件完成的。 (与服务不在同一域下)。
有什么想法吗?
谢谢。
var JSONObject= {
"login":LogInUserName,
"password": LogInPassword,
};
$.ajax({
url:'https .... ',
type:'post',
data : JSONObject,
dataType: 'JSON',
success: function(data) {
if(data.hasOwnProperty('errors'))
{
alert("errors found");
alert(data.errors);
}
else
{
alert("data sent!");
}
} ,
error: function (request, status, error) {
alert ("error before sending");
alert(request.responseText);
location.reload();
}
});
【问题讨论】:
-
尝试在此处删除多余的逗号:
"password": LogInPassword,在 IE10 上应该不再是问题,但谁知道呢?! -
你试过用IE10的调试器吗?按 F12 打开,单击 Scripts 选项卡,然后单击 Start Debugging - 您可以设置断点并查看特定时间的变量。编辑:另外,Wolff 是对的——虽然其他浏览器通常可以处理那些额外的逗号,但对我来说,这已经把 IE 搞砸了很多次。
-
您可以尝试将
cache: false添加到 ajax 调用中,不知道 IE10 是否如此,但 IE8 有尝试缓存 ajax 调用的习惯,这将导致基本上返回 no数据 -
错误回调中的“error”参数表示什么?
-
在这种情况下,听起来您确实是在跨域发布到安全站点,在这种情况下,任何浏览器都不应允许(默认情况下)。这是为了保护网站免受未经授权的使用。您将需要开始阅读(大量)有关跨域解决方案的帖子,但通常最好的解决方案是从您的网络服务器访问该服务,并将其提供给来自同一域的客户端。
标签: javascript jquery ajax json internet-explorer