jQuery AJAX在使用IE时不起作用
我在各地和其他地方见过很多人都有这个问题,但给出的解决方案似乎都不适合我 我有一个对ASHX处理程序的jqueryajax调用。该代码在Firefox和Chrome中工作,但在IE(版本8、9或10)中不起作用 看起来是这样(简化): 当我在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将
[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))
}
});