这种“hijaxing”形式的“模式”是否可靠?

时间:2015-03-23 06:56:40

标签: javascript ajax node.js sails.js hijax

Hijax的定义:

  

Hijax是渐进增强应用的术语   AJAX。它也被称为简化的Ajax'。 Hijax是由提议的   Jeremy Keith作为构建Web应用程序的技术   仅使用AJAX技术优雅地降级并劫持'形成   提交和回复,更新DOM以反映结果   请求/响应周期。

http://en.wikipedia.org/wiki/Hijax


我刚刚开始了我的一个爱好项目,我认为这将是有趣的" hijax"几乎所有的东西。我使用sails.js(使用express)作为我的后端框架,而在客户端没有框架。


Hijaxing常规链接(GET请求)非常简单,但POST请求稍微复杂一些,因为它们修改数据并且必须响应操作是否成功,并且(有时)使用更新的数据回馈更新的视图。

我处理POST请求(表单POST)的方式是......

  1. 在客户端,我检查具有type=submit属性且属于form的任何元素的点击次数。
  2. 我向该元素的表单操作发送 AJAX请求
  3. 在服务器上,该操作路由的控制器会修改数据库,如果成功,则会发送 res.redirect()发送表单后要加载的所需URL。
  4. 回到客户端,当服务器响应重定向时,我的hijax脚本会插入'重定向'将HTML响应到文档中(因为res.redirect()实际上发送HTML)。

  5. [客户端] 以下是发送表单数据并插入响应HTML的客户端代码示例:

    function ajaxSend(form) {
        var xhr = new XMLHttpRequest(),
            formData = new FormData(form);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                var response = xhr.responseText;
                    UI.body.innerHTML = response;
                }
            }
        }
        xhr.open("POST", form.action, true);
        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xhr.send(formData);
    }
    

    [SERVER] 以下是这个AJAX脚本在发出POST请求时与之通信的控制器类型示例:

            User.update({ id: req.user.id }, {
    
            }).exec(function done(err, updated) {
                if(err) return res.redirect('/profile?err');
                return res.redirect('/profile');
            });
    

    我的所有正常GET路由已经处理了要服务的数据,具体取决于是否从AJAX请求它​​们。这就是res.redirect()也返回适当的HTML(部分位或完整的东西)的原因。我认为如果验证/数据发布出错,我也可以发送Flash消息和重定向。

    所以我的问题是,是否可以依赖res.redirect()在数据库修改完成后发回我想要呈现的HTML?我的意思是,毕竟重定向指令包含在标题中,并且不是非常可靠,或者是它?我意识到我也可以返回一个视图,但那时必须复制其他控制器已经完成的代码。

    感谢。


0 个答案:

没有答案