46

次のスニペットがあります。これは、jQuery Form プラグインを使用してフォームをサーバーに (ajax で) 投稿します。

  var options = {
    dataType: "json",
    success: function(data) { 
      alert("success");
    } 
  }; 

  $form.ajaxSubmit(options);

フォーム:

<form enctype="multipart/form-data" id="name_change_form" method="post" action="/my_account/"> 
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6c9b552aaba88b8442077e2957e69303' /></div> 
  <table> 
    <tr> 
      <td> 
        <label for="id_first_name">First name</label>:
      </td> 
      <td> 
        <input name="first_name" value="Patrick" maxlength="30" type="text" id="id_first_name" size="30" /> 
      </td> 
    </tr> 
    <tr> 
      <td> 
        <label for="id_last_name">Last name</label>:
      </td> 
      <td> 
        <input name="last_name" value="Sung" maxlength="30" type="text" id="id_last_name" size="30" /> 
      </td> 
    </tr> 
  </table> 
  <input type="hidden" name="form_id" value="name_change_form" /> 
</form> 

ajax の実装は問題なく動作しています。しかし、私は警告を受けています

リソースは Document として解釈されますが、MIME タイプ application/json で転送されます

Chrome デベロッパー ツールで。警告の理由、またはそれを解決する方法を知りたいです。

代わりに使用するように変更したところ$.post、魔法のようにエラーはなくなりました。なぜ$.post機能するのかわかりませんが、機能しません$form.ajaxSubmit。誰かが説明を提供できれば、それは素晴らしいことです。少なくとも、この問題は解決されています。以下は新しいコードです。

var url = $form.attr("action");
$.post(
  url, 
  $form.serialize(), 
  function(data) {
    alert("success");
  },
  "json"
); 
4

7 に答える 7

21

私は同じエラーに直面していました。私のために働いた解決策は次のとおりです。

サーバー エンドから、JSON 応答を返すときに、コンテンツ タイプを変更します: text/html

ブラウザ (Chrome、Firefox、IE8) でエラーが発生しなくなりました。

于 2011-08-13T21:01:37.880 に答える
7

これは実際には JavaScript ライブラリではなく、Chrome の癖です。修正は次のとおりです。

メッセージが表示されないようにし、Chrome が応答をコンソールで JSON として適切にレンダリングできるようにするには、要求 URL にクエリ文字列を追加します。

例えば

var xhr_object = new XMLHttpRequest();

var url = 'mysite.com/'; // Using this one, Chrome throws error

var url = 'mysite.com/?'; // Using this one, Chrome works

xhr_object.open('POST', url, false);
于 2011-09-30T10:26:46.597 に答える
2

私は別のアプローチを取りました。$.post を使用するように切り替えたところ、それ以来エラーは発生しなくなりました。

于 2011-08-16T17:15:20.623 に答える
1

これは私に起こりました。これを削除すると、 enctype="multipart/form-data" 警告なしで機能し始めました

于 2013-09-29T11:05:12.767 に答える
0

単純に JSON.stringify(options) を使用して JSON オブジェクトを文字列に変換してから送信し、警告を無視して正常に動作させることができます

于 2012-09-27T15:40:57.123 に答える
-2

を使用しdataType: "jsonp"ます。以前も同じエラーがありました。それは私のために修正されました。

于 2013-01-15T07:40:05.487 に答える