Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新手:jQuery.ajaxSetup和#x27;发送前';做_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

新手:jQuery.ajaxSetup和#x27;发送前';做

新手: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响应程序)似乎不会调用它 可能是一个简单的解决办法。

我正在Rails应用程序中使用这个。我有一些代码将响应类型更改为javascript

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()
});