Jquery-Ajax调用未按预期工作

时间:2013-03-04 01:07:20

标签: google-app-engine jquery twitter-bootstrap

我正在开展这样的项目: (HTML Forms(AJAX)+ twitter bootstrap)(独立HTML,无JSP等) - > Servlets(在Google App Engine-JAVA上) - >持久性(Google Cloud SQL)。

我对jQuery ajax调用很新,但我理解这个过程,因为我习惯于编写旧的XHR代码。 下面是JS中的函数,它不会向控制台写入预期的结果。到目前为止,大多数时候表单数据都是持久的。 我的Servlet如果正常,并输出一个有效的JSON。(在浏览器上调用URL总是按预期工作。)

我的回答是为什么jQuery ajax回调(完成,失败,总是)不能正常工作?他们写入console / display alert()。 谢谢,你的时间!

$(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);
            }
        });
    });
});

1 个答案:

答案 0 :(得分:0)

donefailalways是传递给$.ajax的设置对象的属性,它们是jqxhr对象上的回调< em>通过调用$.ajax返回。它们应该像这样配置:

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

查看API documentation以获取进一步的使用指南。