我有一个简单的ajax调用,可以在IE以外的其他平台上正常工作。 它适用于我的Mac,Ubuntu,Windows Chrome,Windows Firefox,但不适用于IE
var params = "action=tsll_field_request&tsll_action=login&email=foo";
$.ajax( {
type: "POST",
url: ajaxurl,
data: params,
dataType: "json",
error:function(xhr, status, errorThrown) {
alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
},
success: ajaxLoginCallback
});
永远不会调用error函数,ajaxLoginCallback状态总是成功但是IE上的数据(传递给ajaxLoginCallback的参数)总是-1。返回的数据是一个用php的json_encode()格式化的json项。
我完全不知道为什么这个浏览器没有解析JSON以及为什么我没有收到错误。
任何人都可以给我一个线索吗?
答案 0 :(得分:2)
我想我终于明白了。
如果我没有登录到Wordpress,我的ajax电话被“拒绝”了。 没有错误,但是调用没有传递给我的插件。
在开发过程中,我通常会打开两个选项卡,一个位于管理端(wp-admin),另一个位于公共站点上的同一个浏览器中。 IE是我检查的最后一个浏览器,所以我从不打开管理标签。如果我没有登录到wordpress,则调用:mydomain.org/wp-admin/admin-ajax.php必须返回-1。
因此Ajax调用结束,它成功(因此没有错误),但我没有必要的批准来执行它所以我得到-1作为响应。
Doh ......感到愚蠢,但我希望这有助于其他人。 - 斯科特答案 1 :(得分:0)
您可以发布JSON数据吗?也许它格格不入? (尾随逗号,不是什么)。尝试使用该JSON数据制作JS文件并尝试查询它。
答案 2 :(得分:0)
在语法级别上没有什么看错,但是你使用的是其他变量,也许有些错误。
答案 3 :(得分:0)
if ($snarky) { print "A lot of stuff works on every platform except for IE." }
IE似乎缓存了响应,尽管请求不要。 来自JQuery Google Group
的潜在答案