【发布时间】:2013-03-27 16:11:26
【问题描述】:
我在 SO 和其他地方看到很多其他人遇到这个问题,但给定的解决方案似乎都不适合我。
我有一个对 ASHX 处理程序的 jQuery AJAX 调用。该代码适用于 Firefox 和 Chrome,但不适用于 IE(版本 8、9 或 10)。
看起来像这样(简化):
var val = $(this).val();
$.ajax({
url: '/Source/Handlers/Search.ashx?q=' + val,
type: "GET",
cache: false,
dataType: 'json',
error: function(w,t,f) {
alert(w + "\n" + t + "\n" + f);
},
success: function (data) {
...
}
});
当我在 IE 中运行代码时,错误处理程序会启动并显示
[object Object]
error
error
有用吗?
ASHX 处理程序是这样的(再次简化):
public class Search : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/json";
context.Response.Buffer = false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Suggestions> jsonResponse = new List<Suggestions>();
// do some stuff
context.Response.Write(serializer.Serialize(jsonResponse));
}
}
我尝试过将“GET”替换为“POST”,我尝试过启用和禁用“缓存”属性,我尝试过不同的数据类型设置,例如“json”、“xml”和“text”。
使用 HTTP Fiddler 我可以看到 json 响应确实回来了,但 IE 似乎无法处理它。
有什么想法吗?
编辑
这是来自 HTTP Fiddler 的 TextView 中的 JSON 响应:
543
[{"title":"GAMES","results":[{"title":"abcdefg™","link":"http://www.abcdefg.com/en_gb/abcdefg/","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg(1).jpg","total":""},{"title":"abcdefg","link":"http://www.abcdefg.com/en_gb/abcdefg","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg","total":""},{"title":"abcdefgg","link":"/Retailers/?game=1432&platform=0","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg?n=9736","total":""},{"title":"abcdefg","link":"http://www.abcdefg.com","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg","total":""},{"title":"abcdefg","link":"/Retailers/?game=1763&platform=0","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg_promo.jpg","total":""}],"total":"24","link":"/Search/?q=total"},{"title":"MEDIA","results":[{"title":"Videos","link":"/Search/?q=total","image":"","total":"1"},{"title":"Screenshots","link":"/Search/?q=total","image":"","total":"35"}],"total":null,"link":null}]
0
编辑 2
嗯,我更新了 $.ajax 调用以提醒 w.status,它返回“404”。困惑——Fiddler 显示响应为 200 时,它的状态如何返回 404?
【问题讨论】:
-
你能发布 JSON 响应吗?
-
你为什么要使用警报?使用控制台!
-
是的,如果您能告诉我们,如果您直接在浏览器中点击该网址,您会从该网址获得什么?它是否产生了有效的 json 响应?
-
真的!我应该这样做,反正这个错误是没用的……
-
+1 到@epascarello。使用
console.dir()而不是alert(),您将从w、f和t中获得更多有用的信息。
标签: jquery ajax json internet-explorer