将 AJAX 响应作为文档处理
Handling an AJAX response as a document?
我正在尝试使用 shebang 实现 AJAX - 这意味着example.com/#!/somepage.php
只是example.com/somepage.php
加载到 AJAX 站点的内容区域中。
这样做的明显方法是只请求somepage.php
,然后将documentElement
的全部内容替换为新文档。然而,这似乎违背了AJAX的目的。
相反,我正在考虑尝试加载somepage.php
,然后提取页面的content
部分并将其简单地放在内容区域中。
为此,我可以使用正则表达式来查找/<div id="content">.*</div>/
但这将是一个非常糟糕的主意(最简单的问题是"哪个</div>
结束内容?相反,我希望能够做类似ajaxresponse.getElementById('content')
的事情,但是我将如何ajaxresponse
转换为document
(或documentFragment
)对象?
或者这只是实现这种 AJAX 设置的错误方法?我最好让服务器端检查X-Requested-With: XMLHttpRequest
并只发回内容区域?
与其逐字请求#!
页面,不如请求与#!
处理程序兼容的变体。
这种方法需要两个步骤。
-
通过 JSON 公开您的内容页面。 使此服务可用于满足特定条件的请求,例如特殊的 get 参数、扩展、标头等。 例如,
/somepage.php?json
可能会以 JSON 格式提供/somepage.php
的内容。 -
编写
#!
处理程序,以便在处理请求时调用上面为该页面定义的服务。 例如,当加载example.com/#!/somepage.php
并且您处理somepage.php
时,改为请求somepage.php?json
,并根据需要传播该请求的内容。
这种方法为您提供了许多好处。
- 减少了 AJAX 请求的响应大小
- 减少服务器端负载,因为不需要呈现 HTML
- 避免 HTML 解析和一些昂贵的 DOM 操作
- 不依赖于浏览器来发送适当的 AJAX 相关标头
请注意,您实际上不需要使用正则表达式来从返回的数据中获取内容。例如,使用jQuery,只需使用$选择器(实时小提琴)的context
参数即可。
$.get("/", {}, function(data){
$("#text").append($("#login", data));
});
另请注意,shebang 导航通常与一些 Javascript 框架相关联。
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 使用mongoose保存多个文档时的错误处理
- RxJs如何处理文档事件
- 在火狐插件中处理右键单击,仅适用于文档
- 如何使用 AngularJS 处理文档单击并通知其他控制器
- 将 AJAX 响应作为文档处理
- 谷歌脚本 - 将 Gmail 附件添加到文档和云端硬盘中的处理
- 文档.写入和委托事件处理程序持久性
- Twitter 引导弹出窗口 :如何在不使用正文/文档事件处理程序的情况下在外面单击时隐藏它
- 处理上传的文本文件后,在Google云端硬盘中创建新的文档
- 阻止删除在准备就绪的文档上分配的处理程序
- CouchDB更新处理程序:文档id不能为空
- 函数没有'我不处理文档
- 如何在嵌入式文档中处理DOM事件
- alert()在加载jQuery文档就绪处理程序时未显示
- 为什么toggle()能处理文档而不能处理正文
- 为什么我的点击处理程序已经在文档上运行了
- Jquery反弹动画函数来处理文档加载
- Jquery trigger()无法处理文档就绪
- 有没有办法处理加载缓慢的文档.写脚本