jQuery AJAX dataType:'脚本'不能在firefox上运行

时间:2014-06-18 06:27:50

标签: javascript jquery ruby-on-rails ajax firefox

我在jQuery中有我的表单代码:

$('form.ajax_form').on('submit', function(){
    event.preventDefault();
    var form_errors_space = $(this).find('.ajax_form_errors:first');
    $.ajax({
      type: "POST",
      dataType: 'script',
      url: $(this).attr('action'), 
      data: $(this).serialize(),
      // show success response from server.
      success: function(data, status, jqXHR) {
        console.log(data);
        console.log(status);
        console.log(jqXHR);
      },
      // show error response from the server.
      error: function(data, status, error_message) {
       // error handeling here
      }
    });
  });

代码适用于chrome和safari。问题出在Firefox上,它将AJAX请求发送为' HTML'数据类型而不是JS /脚本。任何的想法?

注意:我在Ruby on Rails 4,Ruby 2.1.1上执行此操作,出于项目特定原因,我无法使用默认remote: true选项。

Firefox版本:30.0

**更新:**我也试图覆盖内容类型和MIME类型,但它也没有工作。

  ...
  data: $(this).serialize(),
  contentType: 'application/javascript',
  accepts: 'text/script',
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( "application/script; charset=x-user-defined" );
  },
  .....

2 个答案:

答案 0 :(得分:2)

将您的代码更改为如下所示:

$('form.ajax_form').on('submit', function(e){
  e.preventDefault();

而不是:

$('form.ajax_form').on('submit', function(){
    event.preventDefault();

更多information

答案 1 :(得分:1)

尝试使用' text'而不是脚本:

$('form.ajax_form').on('submit', function(){
    event.preventDefault();
    var form_errors_space = $(this).find('.ajax_form_errors:first');
    $.ajax({
      type: "POST",
      dataType: 'text',
      url: $(this).attr('action'), 
      data: $(this).serialize(),
      // show success response from server.
      success: function(data, status, jqXHR) {
        console.log(data);
        console.log(status);
        console.log(jqXHR);
      },
      // show error response from the server.
      error: function(data, status, error_message) {
       // error handeling here
      }
    });
  });