Google chrome JSONP请求,jQuery不支持';t在后面加上一个“;“回调”;参数

Google chrome JSONP请求,jQuery不支持';t在后面加上一个“;“回调”;参数,google-chrome,jquery,jsonp,http-get,script-tag,Google Chrome,Jquery,Jsonp,Http Get,Script Tag,我将JSONP响应的本地版本保存为文件,以便在没有Internet连接的情况下从本地文件系统测试我的单页web应用程序 当我直接从标记加载它时,它工作正常,但当我尝试使用jQuery$.ajax()函数加载它时,它工作不正常。(是的,我也成功地从本地文件系统加载了jQuery。) 我认为可能是jQuery总是在URL中添加一个回调参数,当JSONP来自一个静态命名的文件而不是来自Internet时,这是没有意义的 我已尝试将jsonpCallback设置为null或传递到空字符串',但没有任何区

我将JSONP响应的本地版本保存为文件,以便在没有Internet连接的情况下从本地文件系统测试我的单页web应用程序

当我直接从
标记加载它时,它工作正常,但当我尝试使用jQuery
$.ajax()函数加载它时,它工作不正常。(是的,我也成功地从本地文件系统加载了jQuery。)

我认为可能是jQuery总是在URL中添加一个
回调
参数,当JSONP来自一个静态命名的文件而不是来自Internet时,这是没有意义的

我已尝试将
jsonpCallback
设置为
null
或传递到空字符串
'
,但没有任何区别

还有其他奇怪之处:

  • 当我将完整路径作为URL传递给jQuery时,它可以正常工作,但当我使用相对URL时,它会失败,即使在直接使用
    标记时,两者都可以正常工作
  • 当它失败时,Google Chrome的开发者工具网络标签告诉我方法是
    OPTIONS
    ,而不是
    GET
    !使用绝对URL或带有相对或绝对URL的
    标记方法告诉我该方法是
    GET
这是已知的正确行为吗?已知的不正确行为

jQuery或Google Chrome有什么奇怪的地方吗?(我运行的是Windows 7 32位,Chrome版本21。)

虽然这可能不能解决我所有的问题,但它回答了问题标题中提出的具体问题:

这似乎是我所缺少的:

jQuery的JSONP请求没有附加“回调”参数?

jQuery.ajax()
采用
settings
对象参数。这些设置之一称为
jsonp

从jQuery 1.5开始,将
jsonp
选项设置为
false
可防止jQuery将“?回调”字符串添加到URL或尝试使用“=?”进行转换。在这种情况下,还应该显式设置
jsonpCallback
设置。例如,
{jsonp:false,jsonpCallback:“callbackName”}


我的代码现在可以在Windows 7(32位)下使用当前版本的Chrome(21)、Firefox(13)、Internet Explorer(9)、Opera(12)和Safari(5)。

@Esailija:不,我听说过,但以前从未使用过,所以忘了它的存在。我会做一些实验并更新我的问题。谢谢@Esailija:Hmm关闭了“wontfix”的jQuery bug跟踪器上的这个问题使得
getScript()
似乎不值得追求:啊,我想他们只是创建一个脚本元素,而不是用xhr获取它。@Esailija:Me,但他们甚至没有提供选项。我似乎在一个非常未定义的领域工作-就像我一直以来所做的那样(-:您可以始终
$(“”,{src:“…”}).appendTo(“body”).remove()