AJAX:在'success:'上返回true或false

时间:2013-05-08 19:05:59

标签: php jquery ajax

我有以下AJAX脚本,但由于某种原因,var ok它没有返回true或false,因此表单可以继续:

function ajax_call(email,title,url){
    var email = document.getElementById("email").value;
    var title = document.getElementById("title").value;
    var url = document.getElementById("url").value;
    var parametros = {"emaail":email, "tiitle":title, "uurl":url};
    var ok = true;
    $.ajax({
        data: parametros,
        url: 'validate.php',
        type: 'post',
        error: function () {
            alert("An error has occurred! Try Again!");
        },
        success: function (response) {

            if(response == 'bien') { ok = true; } else { $("#ajax_cal").html(response); ok = false; }

        }
    });

return ok;
}

HTML:

<form onsubmit="return ajax_call();">
...
</form>

PHP:

<?php
//////....
    if(!empty($errors)) { 
        foreach($errors as $error) { 
            echo '<li>'.$error.'</li>';
        }
    } else { echo 'bien'; }

?>

除了返回值之外,一切都很好。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

完全阻止提交,发送ajax请求,如果好,请提交表单。

HTML:

<form id="myform">
...
</form>

JavaScript的:

$("#myform").submit(function(e){
    // prevent submit
    e.preventDefault();

    var email = document.getElementById("email").value;
    var title = document.getElementById("title").value;
    var url = document.getElementById("url").value;
    var parametros = {"emaail":email, "tiitle":title, "uurl":url};
    $.ajax({
        data: parametros,
        url: 'validate.php',
        type: 'post',
        context: this,
        error: function () {
            alert("An error has occurred! Try Again!");
        },
        success: function (response) {

            if($.trim(response) == 'bien') { 
                this.submit(); // submit, bypassing jquery bound event
            } 
            else { 
                $("#ajax_call").html(response); 
            }

        }
    });

});

答案 1 :(得分:1)

您在功能结束时返回正常状态。在您的ajax请求发送和完成之前返回

您不能依赖函数的返回值,您应该在“成功”部分内部执行某些操作。这主要取决于你想要对你的返回值做什么

答案 2 :(得分:0)

我是jquery的新手,但在我一直在努力的一些剧本中,我必须在你的'响应'前加上前缀。

例如......

if(response.tiitle == 'bien') { ok = true; } else { $("#ajax_cal").html(response); ok = false; }

还要注意你的“参数”中有双字母,但我确信这是故意的(即小提示而不是标题等)。