Javascript ajax表单提交使用什么返回类型?

Javascript ajax表单提交使用什么返回类型?,javascript,json,validation,Javascript,Json,Validation,我有一个“新帖子”表单,它在UI中是模态的。当用户提交它时,ajax调用会将它发布到我的内容控制器中的newpost操作。我的问题是,控制器的响应类型应该是什么 如果表单进行了验证,我想对UI竖起大拇指,这样它就可以关闭模式窗口并继续进行操作。我怀疑JSON在这里是一个更好的选择,因为自省HTML并不是那么干净 如果表单未验证,我需要返回替换HTML(这是重新呈现的表单,包括错误消息) 我倾向于总是返回JSON对象。第一个属性是布尔成功/失败指示器。如果插入失败,则会有第二个属性包含替换HT

我有一个“新帖子”表单,它在UI中是模态的。当用户提交它时,ajax调用会将它发布到我的内容控制器中的newpost操作。我的问题是,控制器的响应类型应该是什么

  • 如果表单进行了验证,我想对UI竖起大拇指,这样它就可以关闭模式窗口并继续进行操作。我怀疑JSON在这里是一个更好的选择,因为自省HTML并不是那么干净

  • 如果表单未验证,我需要返回替换HTML(这是重新呈现的表单,包括错误消息)

我倾向于总是返回JSON对象。第一个属性是布尔成功/失败指示器。如果插入失败,则会有第二个属性包含替换HTML

这听起来合理吗?有更好的选择吗

我正在使用jQuery和Zend框架(并不是说它对答案有多大影响)


谢谢

对您的问题的简短回答:JSON

您不必通过ajax响应返回html,您可以通过DOM元素处理消息传递,例如:

$.ajax({
    type: "POST",
    url: "login.php",
    success: function(data) {
        if (data.field.status == 'failure') {
            if (data.field.username == 'fail') {
                $("div#usernameError").show();
            }
            if (data.field.password == 'fail') {
                $("div#passwordError").show();
            }
        } else {
            $("div#loginOverlay").dialog("close");
        }
    },
    dataType: "json"
});

考虑以下两个JSON响应:

{
    "status": "error",
    "fields": ["username", "password"],
    "message": "Please enter valid username and password"
}

与其替换整个表单,我建议您有一个回复,只回复重要的部分


此外,每次你使用
innerHTML
,上帝都会杀死一只小猫。。而且您的DOM结构和引用也会被破坏。这使得JS代码非常脆弱。

嘿,迈克,这真是太好了。谢谢。您甚至可以扩展它,使json包含密码输入无效的原因;不匹配、字符数过低等。
{
    "status": "ok",
    "redirect": "http:/who.cares/form/complete"
}