【发布时间】:2012-06-09 03:49:57
【问题描述】:
我正在尝试使用 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 并只发回内容区域会更好吗?
【问题讨论】:
-
包含
jQuery是否可以做到这一点?使用 jQuery Ajax 的.load():$('#result').load('ajax/test.html #container');。我知道你应该比我更清楚,shebang和 jQuery 有什么问题吗? -
您的
#!处理程序不能简单地发出与页面逐字不同的请求吗?例如,当#!处理/somepage.php时,请求/somepage.php?json(返回一些方便使用的东西)。 -
使用纯 JS,您还可以将请求的页面附加到隐藏元素(或者只是动态创建它),然后也可以通过
getElementById获取加载的内容 div。
标签: javascript ajax hashbang