新手:jQuery.ajaxSetup和#x27;发送前';做
我正在Rails应用程序中使用这个。我有一些代码将响应类型更改为javascript新手:jQuery.ajaxSetup和#x27;发送前';做,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我正在Rails应用程序中使用这个。我有一些代码将响应类型更改为javascript jQuery.ajaxSetup({ 'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") } }) 这在提交表单时可以正常工作,但在提交AJAX生成的javascript表单以单击链接时(代码继续通过Rails html响应程序)似乎不会调用它 可能是一个简单的解决办法。
jQuery.ajaxSetup({
'beforeSend': function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript")
}
})
这在提交表单时可以正常工作,但在提交AJAX生成的javascript表单以单击链接时(代码继续通过Rails html响应程序)似乎不会调用它
可能是一个简单的解决办法。有什么想法吗?我不知道你所说的“由AJAX生成的javascript表单”是什么意思——有没有可能你正在使用javascript在DOM中生成表单,然后通过单击(通过javascript)按钮来定期提交表单?如果是这样,那么它不是通过AJAX提交的,而是作为一篇普通的文章提交的。只有通过AJAX提交表单时,才会调用beforeSend处理程序。您的setup调用添加了一个默认的beforeSend函数,该函数设置Accept头以便返回javascript,但它只在通过AJAX提交的请求上执行此操作 这就是AJAX提交的外观:
$.ajax({
url: '/controller/action',
type: 'post',
dataType: 'json',
data: $('form').serialize(), // this gets the form data
success: function() {
},
...
});
这是一个javascript创建的表单和提交(非AJAX)
如果您想使用Rails的respond\u to。。。格式化块。Prototype默认设置此选项,但您需要在JQuery中手动设置,因为当text/javascript位于accept头中时会执行format.js选项 您确定您的AJAX请求实际上正在启动吗?也许您的处理程序没有连接,链接正在发送一个正常的HTTP GET
$('<form><input type="hidden" name="inp" value="somedata" /></form>')
.appendTo(document.body)
.submit();
$('form #submitButton').click( function() {
$('form').submit()
});