3

次のようなクラスにjqueryajaxFormを適用するのは初めてです

<form class="ajax_form"...><input type="text" name="q" /><input type="submit" /></form>
<form class="ajax_form"...><input type="text" name="q" /><input type="submit" /></form>

<script>
$('.ajax_form').ajaxForm({
  dataType: 'json',
  error: ajaxErrorHandler,
  success: function(response) { // do some ui update .. }
});
</script>

Ajaxの呼び出しが完了した後、firebugはエラー応答を報告しませんでしたが、私は常にエラーセクションに入ります。

4

6 に答える 6

11

この場合、これは適切であるかどうかはわかりませんが、同様の問題に対する答えを探していたときに役に立ったので、提供します。Firefox でファイル アップロードを使用して "multipart/form-data" フォームを送信する場合、jquery.form は iframe を使用してフォームを送信します。返されるデータの Content-Type が text/plain の場合、iframe は結果のテキストを <pre> タグでラップします。これにより、Firebug が応答と json を正しく表示しても、jquery json パーサーが停止し、パーサー エラーが発生します。 .

これは、私がそれを理解する前に頭痛の種を引き起こしました(このスレッドの助けを借りて:http://www.extjs.com/forum/archive/index.php/t-17248.html )。

私の場合の答えは、応答の Content-Type が「text/html」であることを確認することでした (これは、少なくとも私にとっては直感に反していました)。

于 2009-09-17T17:41:23.767 に答える
1

問題はjsonデータにあります。これらはおそらく整形式ではなく、解析できません。その場合、成功関数は呼び出されません。

エラー コールバックのメッセージを出力すると、これを確認できます。次のコードを使用します。

url = url + "?" + $(".ajaxForm").serialize();
$(".ajaxForm").ajax({url: url, dataType: "json", type : "post",
                    success: function(response) {},
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log(textStatus);
                        console.log(errorThrown);
                    }});

プリントアウトの 1 つは、「パーサー エラー」のようなものである必要があります。

于 2009-06-14T15:14:03.343 に答える
1

@c.sokun: クラスを使用するフォームが 1 つしかない限り、ここではクラスの使用は問題になりません。同じページに同じクラスの 2 つのフォームがあると、間違いなく問題が発生します (コードを参照してください...それとも入力ミスですか?)

FireBugを使用して、渡されたパラメーターと返された値を確認しましたか? それが最初のはずです!

于 2009-05-26T06:57:45.467 に答える
0

ajaxErrorHandler は別の場所で定義されていますか? 私はあなたのコードを試しましたが、完全に機能しました。どのバージョンの jQuery と jQuery フォームを使用していますか?

これは私が試したコードです。このテストと同じディレクトリに「{test:'hello world'}」を含む「test.json」という名前のファイルを使用:

<script type="text/javascript" src="http://malsup.com/jquery/jquery-1.2.6.js"></script>
<script type="text/javascript" src="http://malsup.com/jquery/form/jquery.form.js?2.28"></script>

<form class="ajax_form" action="test.json" method="post"><input type="text" name="q" /><input type="submit" /></form>
<br/>
<form class="ajax_form" action="test.json" method="post"><input type="text" name="q" /><input type="submit" /></form>

<script>
$('.ajax_form').ajaxForm({
  dataType: 'json',
  error: function() {alert("error");},
  success: function(response) {alert(response.test);}
});
</script>
于 2009-06-12T10:30:23.713 に答える
0

さて、私は API をチェックインしましたが、「エラー」と呼ばれるオプション フィールドへの参照が見つからなかったので、おそらくそれが理由です。ここで確認してください。

于 2009-06-14T08:08:20.513 に答える
0

フォームがどこかにデータを送信するには、URL と投稿タイプが必要だと思いますか?

これは、彼らがjquery.comで設定した方法です。

$("#myform").ajaxForm({
   url: "mypage.php",
   type: "POST"
 });
于 2009-05-26T05:55:33.593 に答える