首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AJAX:对'success:‘返回true或false

AJAX:对'success:‘返回true或false
EN

Stack Overflow用户
提问于 2013-05-09 03:05:59
回答 3查看 3.2K关注 0票数 0

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

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<form onsubmit="return ajax_call();">
...
</form>

PHP:

代码语言:javascript
运行
复制
<?php
//////....
    if(!empty($errors)) { 
        foreach($errors as $error) { 
            echo '<li>'.$error.'</li>';
        }
    } else { echo 'bien'; }

?>

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-09 03:24:54

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

HTML:

代码语言:javascript
运行
复制
<form id="myform">
...
</form>

JavaScript:

代码语言: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); 
            }

        }
    });

});
票数 4
EN

Stack Overflow用户

发布于 2013-05-09 03:09:04

你在函数的末尾返回了ok。这是在发送和完成ajax请求之前返回的

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

票数 1
EN

Stack Overflow用户

发布于 2013-05-09 03:11:51

我完全是jquery的新手,但是在我编写的一些脚本中,我不得不在“response”前面加上前缀。

例如..。

代码语言:javascript
运行
复制
if(response.tiitle == 'bien') { ok = true; } else { $("#ajax_cal").html(response); ok = false; }

还要注意,您的"parametros“中有两个字母,但我确信这是故意的(即tiitle而不是title等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16448313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档