0

私は次のようなプロジェクトに取り組んでいます: (HTML フォーム (AJAX) + twitter ブートストラップ)(単独の HTML、JSP なしなど)->サーブレット (Google App Engine-JAVA 上)->永続性 (Google Cloud SQL) .

私は jQuery ajax 呼び出しにはまったく慣れていませんが、古い XHR コードの記述に慣れているため、プロセスを理解しています。以下は、期待される結果をコンソールに書き込まない JS の関数です。これまでのところ、ほとんどの場合、フォーム データは永続化されています。私のサーブレットは問題がなければ、有効な JSON を出力します (ブラウザで URL を呼び出すと、常に期待どおりに動作します)。

私の答えは、jQuery ajax コールバック (完了、失敗、常に) が正しく機能しないのはなぜですか? 彼らはコンソールに書き込みます/アラートを表示します()。御時間ありがとうございます!

$(document).ready(function() {
    var myEmail = "";
    var myGender = "";

    $('#saveButton').click(function() {
        $('#myform').submit();
        //alert('Handler for .submit() called.');
        myEmail = document.getElementById("inputEmail").value;
        window.console.log('EMAIL---->' + myEmail);/*ok log!*/
        //alert('EMAIL->' + myEmail);
        var radioObj = document.forms['myForm'].elements['gender'];
        myGender = getCheckedValue(radioObj);
        window.console.log('GENDER---->' + myGender);/*ok log!*/
        //alert('GENDER->' + myGender);
        var jqXHR = $.ajax({
            statusCode : {
                404 : function() {
                    alert("404 ERROR - page not found");
                }
            },
            url : "/newuser",
            type : "GET",
            timeout : 10000,
            data : {
                email : myEmail,
                gender : myGender,
                operation : '0'
            },
            done : function(data, textStatus, jqXHR) {
                window.console.log('done -> RESPONSE---->' + data);/*this does not log!*/
                alert(data);
            },
            fail : function(jqXHR, textStatus, errorThrown) {
                window.console.log('always -> RESPONSE---->' + data); /*this does not log!*/
                alert(data);
            },
            always : function(data, textStatus, jqXHR) {
                window.console.log('always -> RESPONSE---->' + data); /*this does not log!*/
                alert(data);
            }
        });
    });
});
4

1 に答える 1

0

doneに渡される設定オブジェクトのプロパティでfailalwaysなくへの呼び出しによって返さ$.ajaxれるjqxhr オブジェクトのコールバックです。代わりに、次のように構成する必要があります。$.ajax

var jqxhr = $.ajax( "example.php" )
  .done(function() { alert("success"); })
  .fail(function() { alert("error"); })
  .always(function() { alert("complete"); });

詳しい使用方法については、API ドキュメントをご覧ください。

于 2013-03-04T01:53:54.310 に答える