Jquery $ .ajax()json调用* .js文件导致浏览器询问'保存/打开'

时间:2009-05-09 00:44:31

标签: jquery ajax json browser callback

当我使用{...'dataType':'script'...}时,我能够向具有'.js'扩展名的网址发出$ .ajax()请求。但是,当我使用{...'dataType':'json'...}浏览器(Opera和FF,到目前为止,但我敢打赌它是通用的)要求保存/打开请求的结果。< / p>

请注意,我的'success'回调运行正常并且使用生成的json对象就好了。

我的问题是,我应该从资源中删除* .js扩展名并传递'json = true'选项吗?或者是否有一种方便的方法来阻止浏览器尝试渲染/保存/打开结果? (当然,我的意思是,不是每个用户都必须在浏览器中设置的东西。)

另请注意,我正在使用Rails,因此标题顺序路由问题阻止我使用Accept标头来解决此问题。

3 个答案:

答案 0 :(得分:4)

我可能在这里错了,但我怀疑你忘了从你的事件处理程序返回false。因此,您的请求将传播到默认处理程序。或者正如nickf所指出的那样导致脚本失败的错误。尝试将代码包装在try catch中,看看是否有任何错误:

try {
   // your code
} catch(e) {
   alert(e);
}

答案 1 :(得分:1)

喔。这是一场骚乱。显然,重要的是不要评论声明'return false;'在事件处理程序结束时。

我必须无意中这样做,同时在处理程序的末尾附近注释掉一些其他代码。

请继续关注未来的1337 h4x0r建议!

答案 2 :(得分:0)

嗯,JSON文件的'正确'文件扩展名是.json,而不是.js。你试过了吗?