1

状況:

  • 私は単純なフォームを持っており、実際の送信の代わりに.post()-call (
  • 投稿は、要求を投稿200 (OK)し、応答本文に予期される文字列を含むステータスを受け取るように機能します (FireBug の Net-View に見られるように)。

質問:

  • を含む無名関数alert()は実行されません。何故ですか?

ノート:

  • メソッドがいつ起動するかを示すアラートを挿入しました
  • 便宜上、コードの下にフィドル リンクを追加します。

コード:

ここに私のフォームがあります:

<form>
    <input type="submit" value="Submit" />
</form>

これは私が期待していたものでした:

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, function (data, textStatus, jqXHR) { 
            $('form').append(data); 
            alert("done"); // <----- THIS NEVER FIRES
        }, 'json');
    });
});

フィドル 1


これはどちらも機能しません:

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, null, 'json').done(function (data, textStatus, jqXHR) {
            $('form').append(data);
            alert("done"); // <----- THIS NEVER FIRES
        });
    });
});

フィドル 2


これによりアラートがトリガーされますが、データは空になります。

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1,
            success: function (data, textStatus, jqXHR) {
                $('form').append(data); // <----- DATA IS UNDEFINED
                 alert("done");         // <----- THIS FIRES!
            }
        }, null, 'json');
    });
});

フィドル 3

4

1 に答える 1

4

json に間違ったデータ型を設定しています。サーバーは html 型のデータを返します。ところで、指定する必要はありません。

dataType タイプ: 文字列 サーバーから期待されるデータのタイプ。デフォルト: Intelligent Guess (xml、json、script、text、html)。

http://jsfiddle.net/9NrL5/4/

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, function (data, textStatus, jqXHR) {
            $('form').append(data);
            alert("done");
        });
    });
});
于 2013-06-02T22:14:51.267 に答える