我遇到了一个让我发疯的问题,根据我在网上看到和阅读的所有内容,它应该可以正常工作。
我在 Rails 应用程序中使用 jQuery 而不是原型,并且正在使用 ajaxForm 插件通过 ajax 提交一些表单数据。表单数据被很好地提交,相应的控制器动作被很好地调用,js 类型的正确响应块被很好地调用。
问题在于 *.js.erb 文件的内容被返回到客户端浏览器并且没有被解释为 javascript。它实际上没有任何反应。是的,我已经设置了 dataType: 'script' 但它仍然不起作用。我也尝试过不使用 ajaxForm 插件并在表单提交时手动使用 $.post 函数,但结果仍然相同。
对于一些代码示例,这是我的 ajaxForm 调用:
$("#purchase-item-form").ajaxForm({
dataType: 'script'
});
我也正确设置了接受标头,这工作正常,因为我的 format.js 块是正在执行的块
jQuery.ajaxSetup({
'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
});
在我的操作 *.js.erb 文件中,我现在只有一个警告语句,以帮助调试问题,直到我弄清楚:
alert("action processed successfully");
这在 Firefox 或 safari 中不起作用。如果我查看萤火虫控制台,我可以看到作为 ajax 调用的响应返回的警报语句,它只是没有被客户端评估为 javascript。
仅供参考,如果重要的话,我在 Rails 2.3.4 和 jQuery 1.3.2 上运行