0

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

  • 如果表单验证通过,我想给 UI 竖起大拇指,以便它可以关闭模​​式窗口并继续处理。我怀疑 JSON 在这里会是一个更好的选择,因为自省 HTML 并不那么干净。

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

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

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

我正在使用 jQuery 和 Zend Framework(并不是说它对答案有很大影响)。

谢谢!

4

2 回答 2

1

对您的问题的简短回答: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"
});
于 2013-04-12T03:19:11.580 回答
0

考虑以下两个 JSON 响应:

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

{
    "status": "ok",
    "redirect": "http:/who.cares/form/complete"
}

与其替换整个表单,我建议您做出回应,只回复重要的部分。

此外,每次你使用innerHTML,神杀了一只小猫 .. 并且你的 DOM 结构和引用也被破坏了。导致非常脆弱的 JS 代码。

于 2013-04-12T05:35:42.533 回答