Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是不是;“模式”;至于;“hijaxing”;表格可靠吗?_Javascript_Ajax_Node.js_Sails.js_Hijax - Fatal编程技术网

Javascript 这是不是;“模式”;至于;“hijaxing”;表格可靠吗?

Javascript 这是不是;“模式”;至于;“hijaxing”;表格可靠吗?,javascript,ajax,node.js,sails.js,hijax,Javascript,Ajax,Node.js,Sails.js,Hijax,Hijax的定义: Hijax是一个术语,用于将渐进增强应用于 AJAX它也被称为“简化Ajax”。Hijax是由 Jeremy Keith作为一种构建web应用程序的技术 仅通过使用AJAX技术“劫持”表单即可优雅地降级 提交和响应,更新DOM以反映 请求/响应周期 我刚刚开始一个我的爱好项目,我决定“hijax”几乎所有的东西都会很有趣。我使用sails.js(它使用express)作为我的后端框架,在客户端没有框架 Hijaxing常规链接(GETrequests)非常简单,但是PO

Hijax的定义:

Hijax是一个术语,用于将渐进增强应用于 AJAX它也被称为“简化Ajax”。Hijax是由 Jeremy Keith作为一种构建web应用程序的技术 仅通过使用AJAX技术“劫持”表单即可优雅地降级 提交和响应,更新DOM以反映 请求/响应周期


我刚刚开始一个我的爱好项目,我决定“hijax”几乎所有的东西都会很有趣。我使用sails.js(它使用express)作为我的后端框架,在客户端没有框架


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

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

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

  • [CLIENT]以下是一个客户端代码示例,用于发送表单数据并插入响应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]下面是一个示例,说明了当它是POST请求时,AJAX脚本与之通信的控制器类型:

            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是否可以?我的意思是,毕竟重定向指令包含在一个标题中,这不是很可靠,或者是吗?我意识到我也可以返回一个视图,但那将不得不复制其他控制器已经完成的代码

    谢谢


    你是说“劫机”吗?不,我是说“hijax”。听起来很有趣,但这个词是存在的。From:
    “Hijax是一个术语,用于对AJAX进行渐进式增强。它是一种用于构建web应用程序的技术,通过仅使用AJAX技术“劫持”表单提交和响应而优雅地降级”
    “我意识到我也可以返回一个视图,但那将不得不复制其他控制器已经完成的代码。“-wrt,使用DI/组件可以消除许多重复代码的情况。将逻辑推到控制器中并不比将所有逻辑推到WebFormCodeBehind中好多少。我不使用sails.js,但我可以告诉您我的一般方法。在服务器端,对于正常请求,过程基本上是(1)验证输入,(2)读/写一些数据库,(3)计算一些值,(4)使用模板将这些值放在新页面中发送。我实现“hijax”的方式是:如果请求是AJAX,则将上面的步骤(4)替换为(4)将值放入json对象并返回它。然后客户端使用这些json值来了解页面上要更新的内容。