jquery ajax post可以返回多于1个变量吗?

时间:2009-08-11 13:30:25

标签: jquery

我正在尝试使用jquery和ajax进行评论系统,有时我要求用户在过于频繁发布时输入验证码图像。

我正在使用jquery的facebox插件,是一个弹出式对话框,
我正在触发此框打开,当后端脚本告诉用户需要输入验证码时,它会弹出框并在屏幕上加载php验证码文件。

这是我遇到麻烦的地方,我需要这个盒子不仅可以打开验证码,还可以将注释填充到此框中,就像隐藏的表单字段一样,这样如果用户输入正确的验证码,然后会发布评论,否则,他们正在批准验证码,然后什么都不会发生,所以我需要发表评论。此外,如果他们得到验证码错误,那么我需要再次重新加载验证码,还有那里的评论,如果我可以让第一部分工作,那应该很容易。

到目前为止,这是我的代码,有人可以帮忙吗?

$.ajax({
    type: "POST",
    url: "process.php",
    data: args,
    cache: false,
    success: function (data) {
        // there was an error so we will show an error message
        if (data == 'error') {
            alert(data);
            //we need the user to submit a captcha to post there data
        } else if (data == 'captcha') {
            jQuery.facebox(function () {
                jQuery.facebox({
                    ajax: 'captchabox.php'
                })
            })
            //everything is all good, let post there comment
        } else {
            $('#comments').prepend(data);
            $(this).remove();
        })
    };

    // remove loading image
    $('#load').fadeOut();
}
});

1 个答案:

答案 0 :(得分:2)

是的它可以,但它更依赖于你发布的内容而不是jQuery本身;也就是说您正在使用的页面或网络服务进行处理。您可以作为服务调用(使用JSON或XML),数组或单个响应的结果返回复杂对象。

在您的process.php上,它可以返回一个响应对象,其中包含成功值(true / false),原因/消息(字符串)以及您可能需要的任何其他数量的值。然后在您的代码中,您可以检查:

if (data.Success) { /* code here */ } else { ... }

请参阅以下链接,通过PHP返回JSON:http://us2.php.net/manual/en/book.json.php