jQuery AJAX数据类型:'脚本'不能在firefox上工作

jQuery AJAX dataType: 'script' not working on firefox

本文关键字:firefox 工作 不能 脚本 数据类型 AJAX jQuery      更新时间:2023-09-26

我的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" );
  },
  .....

将代码更改为如下所示:

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

代替:

$('form.ajax_form').on('submit', function(){
    event.preventDefault();
更多信息

尝试使用" text "代替script:

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