JQuery.ajax适用于除IE之外的所有平台

时间:2010-02-17 00:05:54

标签: jquery ajax json internet-explorer

我有一个简单的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以及为什么我没有收到错误。

任何人都可以给我一个线索吗?

4 个答案:

答案 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

的潜在答案