当我使用{...'dataType':'script'...}时,我能够向具有'.js'扩展名的网址发出$ .ajax()请求。但是,当我使用{...'dataType':'json'...}浏览器(Opera和FF,到目前为止,但我敢打赌它是通用的)要求保存/打开请求的结果。< / p>
请注意,我的'success'回调运行正常并且使用生成的json对象就好了。
我的问题是,我应该从资源中删除* .js扩展名并传递'json = true'选项吗?或者是否有一种方便的方法来阻止浏览器尝试渲染/保存/打开结果? (当然,我的意思是,不是每个用户都必须在浏览器中设置的东西。)
另请注意,我正在使用Rails,因此标题顺序路由问题阻止我使用Accept标头来解决此问题。
答案 0 :(得分:4)
我可能在这里错了,但我怀疑你忘了从你的事件处理程序返回false。因此,您的请求将传播到默认处理程序。或者正如nickf所指出的那样导致脚本失败的错误。尝试将代码包装在try catch中,看看是否有任何错误:
try {
// your code
} catch(e) {
alert(e);
}
答案 1 :(得分:1)
喔。这是一场骚乱。显然,重要的是不要评论声明'return false;'在事件处理程序结束时。
我必须无意中这样做,同时在处理程序的末尾附近注释掉一些其他代码。
请继续关注未来的1337 h4x0r建议!
答案 2 :(得分:0)
嗯,JSON文件的'正确'文件扩展名是.json
,而不是.js
。你试过了吗?