0

次の$.ajaxを送信します。これは実際に実行されていますが、エラーなしでサイレントに失敗します。IE9開発ツールはエラーを発生させず、フィドラーはトラフィックを表示しません。

「処理」ビットが画面に表示されるので、コードが実際に実行されることを確認できます。しかし、残りは失敗するようです。私はxドメインを実行していません。

$('.signupMsg').html("<img src='/assets/img/load-black.gif' /> Processing...");
var data = $('#emailForm').serialize();
$.ajax({
    url: 'https://example.com/proxy/emaillist',
    type: 'POST',
    data: data,
    statusCode: {
        200: function(msg) {
            $('.signupBlock').html("&nbsp;<br><strong>Thank you!</strong><br>You will be hearing from us soon.");
            $('#emailForm').remove();
        },
        500: function(msg) {
            $('.signupBlock').html("&nbsp;<br><strong>Something went wrong.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
            $('#emailForm').remove();
        },
            404: function(msg) {
                    $('.signupBlock').html("&nbsp;<br><strong>Something went wrong.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
                    $('#emailForm').remove();
            },
        503: function(msg) {
            $('.signupBlock').html("&nbsp;<br><strong>Server temporarily down.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
            $('#emailForm').remove();
        },
        400: function(msg) {
            $('.signupMsg').html("<span style='color:red'>Email validation failed, please try again.</span>");
        }
    }                   

});

jQ1.7.2を使用します。コードはGoogleChromeでは正常に実行されますが、IE7-9およびFFでは失敗します。statusCodeは古いブラウザではサポートされていませんか?

または、コード応答サポートのためにSuperAgentに切り替える必要がありますか?http://visionmedia.github.com/superagent/

4

1 に答える 1

0

これはjQueryの修正ではありませんが、AJAX呼び出しの修正です。

SuperAgentに切り替えたところ、同じことが機能しました。

request
.post('url/to/example')
.send(data)
.end(function(res){
    if(res.status==200) {
        $('.signupBlock').html("&nbsp;<br><strong>Thank you!</strong><br>You will be hearing from us soon.");
        $('#emailForm').remove();                           
    }
    if(res.status==500) {
        $('.signupBlock').html("&nbsp;<br><strong>Something went wrong.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
        $('#emailForm').remove();
    }
    if(res.status==404) {
        $('.signupBlock').html("&nbsp;<br><strong>Something went wrong.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
        $('#emailForm').remove();
    }
    if(res.status==503) {
        $('.signupBlock').html("&nbsp;<br><strong>Server temporarily down.</strong><br>Sorry about that, please <a href='/'>refresh</a> and try again.");
        $('#emailForm').remove();
    }
    if(res.status==400) {
        $('.signupMsg').html("<span style='color:red'>Email validation failed, please try again.</span>");
    }
});
于 2012-06-29T01:33:28.320 に答える