我遇到了一个让我疯狂的问题,根据我在网上看过的所有内容,它应该可以正常工作。
我正在使用jQuery和我的Rails应用程序而不是原型,并使用ajaxForm插件通过ajax提交一些表单数据。表单数据提交正常,相应的控制器操作被称为正常,js类型的正确respond_to块被称为罚款。
问题出现在* .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中无效。如果我查看firebug控制台,我可以看到警告语句作为ajax调用的响应返回,它只是没有被客户端评估为javascript。
仅供参考,我正在运行Rails 2.3.4和jQuery 1.3.2,如果这很重要