5

私は $.post を持っています。これは Fiddler を使用して常に投稿が成功するのを確認できますが、成功関数は決して起動されません。

URLへの投稿が成功すると1が返されるか、失敗すると0が返されます。テストするたびに、期待値1が返されるため、何が間違っているのかわかりません

if ($('#mycheckbox').prop('checked')) {
    $.post('/base/MailingList/Subscribe/',
        {
            listId: $('#mycheckbox').val(),
            name: $('#subscriber-name').val(),
            email: $("#subscriber-email").val()
        },
        function(response) {
            console.log(response);
        });
}
4

3 に答える 3

10

最終的なコールバックとして別の関数を貼り付けます。その関数は、失敗した場合に実行されます。

jqueryが推奨する方法は次のとおりです。

var jqxhr = $.post( "example.php", function() {
   alert( "success" );
})
.done(function() {
    alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
    alert( "finished" );
 });
于 2013-10-11T16:13:02.410 に答える
0

これが役立つかどうかはわかりませんが、非同期呼び出しを行うときは常に完全修飾 URL を使用します。あなたは試してみたいかもしれません:

$.post('http://mydomain.com/base/MailingList/Suscribe/', ...

さらに、ハンドリング関数がコールバックから 3 つの引数 (data、textStatus、jqXHR) をすべて受け取るようにすることもできます。このようにして、txtStatus を見て、成功したかどうかを確認できます。

于 2013-10-11T16:16:56.310 に答える
0

私の場合、問題はサーバー上のphpファイルのヘッダーに間違ったMIMEタイプ(「テキスト」ではなく「アプリケーション/ json」)が含まれていたことです。データのタイプに一致しないヘッダーを送信すると、エラーが発生し、$.post 呼び出しが関数に失敗します。

于 2018-06-06T13:08:21.160 に答える