Javascript 当使用json时,ajax在IE10上失败
我正在使用ajax调用rest服务 这一切都在Chrome上运行得很好,但是当从IE10运行它时,ajax调用失败了 我试图打印错误消息,但没有得到启发,只是说“未定义” ajax请求永远不会发送到服务器。 我看到一些帖子讨论了IE和json的问题,但还没有找到正确的解决方案 还有一点(不知道是否相关):如果我试图通过IE 10(将url放入浏览器)访问服务url,JSON不会显示。相反,它会询问我是否要打开文件 另外:请求是从一个html文件完成的。(与服务不在同一域下) 有什么想法吗 谢谢Javascript 当使用json时,ajax在IE10上失败,javascript,jquery,ajax,json,internet-explorer,Javascript,Jquery,Ajax,Json,Internet Explorer,我正在使用ajax调用rest服务 这一切都在Chrome上运行得很好,但是当从IE10运行它时,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();
}
});
您需要做的第一件事是学会正确调试并与
F12
、Console选项卡和Network选项卡成为最好的朋友:
本教程展示了Google Chrome,但同样的理念也适用于IE或FireFox
1-使用console.log()而不是alert()
2-舒适地使用F12
- 按F12
- 转到“网络”选项卡
- 在网站上键入内容并点击Go
- 单击该beast并检查“响应”或“预览”选项卡中的错误
尝试删除此处多余的逗号:
“password”:LogInPassword,
在IE10上不应该再成为问题,但谁知道呢?!你试过使用IE10的调试器吗?按F12键打开,单击脚本选项卡,然后单击开始调试-您可以设置断点并查看特定时间的变量。编辑:另外,Wolff是对的-虽然其他浏览器通常可以处理这些额外的逗号,但这对我来说已经把IE搞砸了很多次。你可以尝试在ajax调用中添加,cache:false
,不知道IE10是否正确,但IE8有一个习惯,即尝试缓存ajax调用,这将导致基本上不返回数据错误回调中的“error”参数表示什么?在这种情况下,听起来确实像是跨域发布到安全站点,在这种情况下,浏览器不应允许(默认情况下)。这是为了保护网站免受未经授权的使用。您需要开始阅读(很多)关于跨域解决方案的帖子,但通常最好的解决方案是从web服务器访问该服务,并使客户可以从同一域访问该服务。这不是答案。更多的是一套通用的有用的东西来尝试。最好是评论。@TrueBlueAussie太好了,我如何插入带有迷你标记的图像?你不能插入图像,尽管你可以用文本解释,但类似的教程应该放在博客上(你可以链接到)。只是说,这不是一个答案,而是一个评论(一个非常大的评论):)哈哈,我知道,我没有博客,但也许我可以把它变成StackOverflow WIKI或其他什么。
var JSONObject = {
"login": LogInUserName,
"password": LogInPassword // get rid of the comma, stop being lazy
};
$.ajax({
url: 'https .... ',
type: 'post',
data: JSONObject,
dataType: 'JSON',
success: function (data) {
// hit F12 and check the console
console.log(data); // F off alert()!
},
error: function (request, status, error) {
console.log(request); // F off alert()!
console.log(status); // F off alert()!
console.log(error); // F off alert()!
// don't reload, we have an issue
// location.reload();
}
});