Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery AJAX在使用IE时不起作用_Jquery_Ajax_Json_Internet Explorer - Fatal编程技术网

jQuery AJAX在使用IE时不起作用

jQuery AJAX在使用IE时不起作用,jquery,ajax,json,internet-explorer,Jquery,Ajax,Json,Internet Explorer,我在各地和其他地方见过很多人都有这个问题,但给出的解决方案似乎都不适合我 我有一个对ASHX处理程序的jqueryajax调用。该代码在Firefox和Chrome中工作,但在IE(版本8、9或10)中不起作用 看起来是这样(简化): 当我在IE中运行代码时,错误处理程序会启动并说 [object Object] error error 有用吧 ASHX处理程序如下所示(再次简化): 编辑2 嗯,我将$.ajax调用更新为alert w.status,它返回“404”。困惑-当Fiddler将

我在各地和其他地方见过很多人都有这个问题,但给出的解决方案似乎都不适合我

我有一个对ASHX处理程序的jqueryajax调用。该代码在Firefox和Chrome中工作,但在IE(版本8、9或10)中不起作用

看起来是这样(简化):

当我在IE中运行代码时,错误处理程序会启动并说

[object Object]
error
error
有用吧

ASHX处理程序如下所示(再次简化):

编辑2


嗯,我将$.ajax调用更新为alert w.status,它返回“404”。困惑-当Fiddler将响应显示为200时,它如何返回404状态?

尝试添加
数据:{q:val}
,看看这是否解决了问题:

 var val = $(this).val();

 $.ajax({
    url: '/Source/Handlers/Search.ashx',
    type: "GET",
    data : {q : val},  //<--------send it this way
    cache: false,
    dataType: 'json',
    error: function(w,t,f) {
       alert(w + "\n" + t + "\n" + f);
    },
    success: function (data) {
       ...
    }
 });
var val=$(this.val();
$.ajax({
url:“/Source/Handlers/Search.ashx”,
键入:“获取”,

资料:{q:val},//我隐约记得这样一个问题。 你能试着加点吗

contentType: "application/json; charset=utf-8"

到ajax请求属性。我认为这解决了当时的问题。

经过多次尝试和错误后,我发现了问题。使用IE时,我需要调用JSON.parse(数据)在从我的ASHX处理程序返回的数据对象上。为此,请使用调用Ajax的非jQuery方法。这意味着我有两个不同的Javascript块—一个用于IE,另一个用于其他浏览器

if ($.browser.msie) {
    var xhReq = new XMLHttpRequest();
    xhReq.open("GET", "/Source/Handlers/Search.ashx?q=" + val + "&d=" + dateObj.getTime(), false);
    xhReq.send(null);
    AjaxSuccess(xhReq.responseText);
} else {
    $.ajax({
        url: '/Source/Handlers/Search.ashx',
        type: "GET",
        cache: false,
        dataType: 'json',
        data: { q: val },
        contentType: "application/json;",
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.responseText);
        },
        success: function (data) {
            ...
        }
    });
 }

 function AjaxSuccess(data) {
     data = JSON.parse(data);
     ...
 }

奇怪的是,JSON.parse()方法在Firebug中抛出了一个“意外字符”错误。

也许编码有问题。试试这个

$.ajax({
        type: 'GET',
        url: encodeURI(url ),
        dataType: 'text',
        success: function (data) {
                            result = JSON.parse(JSON.parse(data))
                                                }
       });

你能发布JSON响应吗?为什么要使用警报?使用控制台!如果你直接在浏览器中点击url,你可以告诉我们你从url中得到了什么?它会生成有效的JSON响应吗?是的!我应该这样做,错误是没有用的…+1到@epascarello。使用
console.dir()
而不是
alert()
,你会从
w
f
t
中获得更多有用的信息。这只是一个猜测,还是你认为IE对此没问题,但却在与作为URL一部分的查询字符串作斗争?坦率地说,以前从未遇到过这样的问题,但我会说这是一个猜测。@rf\u wilson如果你能告诉我们,如果你直接在浏览器中点击这个url,你会从中得到什么?它会产生一个有效的json响应吗?请参阅上面的原始帖子,json响应添加了+1。如果你没有击败我,我会给出一个类似的答案。不幸的是,这对我不起作用。不过谢谢你的回答。
contentType: "application/json; charset=utf-8"
if ($.browser.msie) {
    var xhReq = new XMLHttpRequest();
    xhReq.open("GET", "/Source/Handlers/Search.ashx?q=" + val + "&d=" + dateObj.getTime(), false);
    xhReq.send(null);
    AjaxSuccess(xhReq.responseText);
} else {
    $.ajax({
        url: '/Source/Handlers/Search.ashx',
        type: "GET",
        cache: false,
        dataType: 'json',
        data: { q: val },
        contentType: "application/json;",
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.responseText);
        },
        success: function (data) {
            ...
        }
    });
 }

 function AjaxSuccess(data) {
     data = JSON.parse(data);
     ...
 }
$.ajax({
        type: 'GET',
        url: encodeURI(url ),
        dataType: 'text',
        success: function (data) {
                            result = JSON.parse(JSON.parse(data))
                                                }
       });