我的错误有点奇怪,它只发生在我在此帖子底部链接的firefox扩展中。我无法在任何其他设置中重现此错误。
我有这个ajax请求
$.ajax({
type: "GET",
dataType: "jsonp",
url: url,
jsonpCallback: "JSONCallback",
data: {title:$("#txtTitle").val(), url:taburl},
success: function(data, textStatus) {
if(data.code > 0)
{
$("#icon").removeClass().addClass('accept');
}
else
{
$("#icon").removeClass().addClass('error');
if(data.code == '-1')
alert('kunne ikke finde din ønskeseddel på e-ønsker.dk - besøg e-ønsker.dk, og prøv derefter igen');
}
},
error: function(xhr, textStatus, errorThrown) {
alert("XMLHttpRequest="+xhr.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
$("#icon").removeClass().addClass('error');
}
});
服务器返回
JSONCallback({"code":405});
标头为application/json
那么为什么我得到一个parseError,说没有调用JSONCallback?我认为jQuery应该为我处理这个问题?
代码来自http://builder.addons.mozilla.org/addon/1022928/latest,相关文件为data/panel.js
答案 0 :(得分:2)
问题在于window
。解决这个问题的最简单方法是编辑jQuery代码(我知道,我也讨厌这样做)使用unsafeWindow
而不是window
。
答案 1 :(得分:1)
您是否尝试启用“跨源资源共享”
使用:
jQuery.support.cors = true;
前一段时间我和firefox有同样的问题,在使用我的ajax调用之前使用该行修复了它。
我会因某种原因让你的失败工作:)祝你好运
答案 2 :(得分:0)
这不是一个真正的答案,但你为什么使用jsonp?在Firefox扩展的上下文中运行的代码不受跨源限制。
我对jsonp的理解是使用服务器的响应将脚本标记添加到文档中,以便执行回调。在Firefox扩展中,“文档”是XUL UI而不是常规页面的文档。我不确定向XUL添加脚本元素会导致浏览器执行该脚本。
希望这有帮助!