0

我有以下 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'; }

?>

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

4

3 回答 3

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

        }
    });

});
于 2013-05-08T19:24:53.670 回答
1

您在函数结束时返回 ok 。这是在您的 ajax 请求发送和完成之前返回的。

你不能依赖函数的返回值,你应该在你的“成功”部分做一些事情。它基本上取决于你想用你的返回值做什么

于 2013-05-08T19:09:04.450 回答
0

我是 jquery 的新手,但在我一直在处理的一些脚本中,我不得不在你拥有的“响应”前面加上前缀。

例如...

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

另请注意,您的“参数”中有双字母,但我确定这是故意的(即标题而不是标题等)。

于 2013-05-08T19:11:51.417 回答