我有一个让我发疯的问题,根据我在网上看到和读到的一切,它应该可以正常工作。
我在Rails应用程序中使用jQuery而不是prototype,并且使用ajaxForm插件通过ajax提交一些表单数据。表单数据被精细地提交,相应的控制器动作被调用为精细,js类型的正确respond_to block被调用为精细。
问题在于*.js.erb文件的内容被返回到客户端浏览器,而不是解释为javascript。它实际上什么也没发生。是的,我已经设置了数据类型:“script”,但它仍然不起作用。我也尝试过不使用ajaxForm插件,在表单提交时手动使用$.post函数,但结果仍然相同。
$("#purchase-item-form").ajaxForm({
dataType: 'script'
});
jQuery.ajaxSetup({
'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
});
在我的action*.js.erb文件中,我目前只有一条警告语句,以帮助调试问题,直到我能够解决它为止:
alert("action processed successfully");
这在firefox或safari中根本不起作用。如果我查看firebug控制台,我可以看到alert语句作为ajax调用的响应返回,只是客户端没有将其作为javascript进行评估。
仅供参考,我现在运行的是Rails 2.3.4和jQuery 1.3.2,如果这很重要的话