我将JSONP响应的本地版本保存为文件,因此当我没有Internet连接时,我可以从本地文件系统测试我的单页Web应用程序。
当我直接从<script>
标记加载它时它工作正常,但是当我尝试使用jQuery $.ajax()
函数加载它时却没有。 (是的,我已经从本地文件系统成功加载了jQuery。)
我认为可能是jQuery 总是在URL中添加了callback
参数,当JSONP来自静态命名文件而不是来自互联网。
我尝试将jsonpCallback
设置为null
或空字符''
,但没有区别。
还有其他奇怪之处:</ p>
<script>
标记时两者都能正常工作。OPTIONS
而不是GET
!使用绝对网址或带有相对或绝对网址的<script>
代码方法告诉我该方法符合预期GET
。这是一个已知的正确行为吗?一个已知的错误行为?
jQuery或Google Chrome有些奇怪吗? (我在Windows 7 32位,Chrome 21版中运行。)
答案 0 :(得分:0)
虽然这可能无法解决我的所有问题,但它解决了问题标题中提出的具体问题:
这似乎是我所缺少的:
使用jQuery的JSONP请求没有附加“回调”参数?
jQuery.ajax()
获取settings
个对象参数。其中一个设置称为jsonp
。 From the documentation:
从jQuery 1.5开始,将
jsonp
选项设置为false
会阻止jQuery添加&#34;?回调&#34;字符串到URL或尝试使用&#34; =?&#34;转型。在这种情况下,您还应该明确设置jsonpCallback
设置。例如,{ jsonp: false, jsonpCallback: "callbackName" }
我的代码现在正在Windows 7(32位)下使用当前版本的Chrome(21),Firefox(13),Internet Explorer(9),Opera(12)和Safari(5)。