Jquery 处理由两个逻辑上独立的HTML标记部分组成的AJAX响应
我有一个数据响应,从表示的角度来看,它由两个完全独立的部分组成,但它们在服务器端逻辑连接,因此在一个AJAX调用中生成的效率更高。这两个部分必须填充两个单独的div。我的问题是,做这件事的最佳方法是什么 选项1:在服务器端生成响应,如下所示:Jquery 处理由两个逻辑上独立的HTML标记部分组成的AJAX响应,jquery,ajax,Jquery,Ajax,我有一个数据响应,从表示的角度来看,它由两个完全独立的部分组成,但它们在服务器端逻辑连接,因此在一个AJAX调用中生成的效率更高。这两个部分必须填充两个单独的div。我的问题是,做这件事的最佳方法是什么 选项1:在服务器端生成响应,如下所示: <div id="first_section"> ... </div> <div id="second_section"> ... </div> 选项2:编写JS将响应作为一个大
<div id="first_section">
...
</div>
<div id="second_section">
...
</div>
选项2:编写JS将响应作为一个大字符串进行处理,使用一些正则表达式将两个单独的部分作为两个单独的字符串进行解析并返回,以分配给目标div的.html()
选项3:有两个单独的AJAX调用,每个div调用一个(昂贵的复制选项,因为服务器端的计算连接非常紧密)
选项4:有什么建议吗
因为这是我需要在应用程序中始终如一地做的事情,所以正确的方法非常重要。如有任何意见或采用不同的方法,我们将不胜感激
更新:响应是表示(在服务器端生成大量数据标记),而不是数据密集型的。我认为JSON是一个错误的选择,因为它需要在客户端生成标记 您应该将结果作为JSON而不是纯文本返回。这样,您就可以返回一个包含两个属性的数组或对象。您应该将结果作为JSON而不是纯文本返回。这样,您可以返回一个具有两个属性的数组或对象。在这种情况下,很难说哪个选项更好,或者说哪个选项正确。 但是,你可以这样做: 响应=
})) 在这种情况下,很难说哪种选择更好,哪种选择正确。 但是,你可以这样做: 响应=
})) 一种方法是返回与要填充的元素具有相同ID的html段。您可以从响应中创建jQuery对象,然后使用
find
获取每个部分所需的html。这个响应jQuery对象永远不会插入DOM中
<div> <!--- root element wrapper, could even be full page which is excessive but works -->
<div id="first_section">
<!--- new content -->
</div>
<div id="second_section">
<!--- new content -->
</div>
</div>
一种方法是返回与要填充的元素具有相同ID的html段。您可以从响应中创建jQuery对象,然后使用
find
获取每个部分所需的html。这个响应jQuery对象永远不会插入DOM中
<div> <!--- root element wrapper, could even be full page which is excessive but works -->
<div id="first_section">
<!--- new content -->
</div>
<div id="second_section">
<!--- new content -->
</div>
</div>
请看我的更新。响应是标记密集型而非结构化数据。也对您的评论进行了投票。您的意思是可以为JSON对象的每个属性分配任何HTML标记字符串?刚刚意识到,如果是这样,可能JSON是合适的。我知道可以在服务器上生成jSON(或者其他任何东西)。请查看我的更新。响应是标记密集型而非结构化数据。也对您的评论进行了投票。您的意思是可以为JSON对象的每个属性分配任何HTML标记字符串?刚刚意识到,如果是这样,可能JSON是合适的。我知道可以在服务器上生成jSON(或者其他任何东西),我接受你们的答案。我不知道可以从普通字符串创建JQuery对象,因此可以对其调用.find。此外,这不是一个JSON应用程序。对吗?你能告诉我这件事吗?谢谢。不涉及json…就像我说的,你可以返回一个完整的html页面并执行此操作。JSON只是数据传递的一种格式,但ajax可以使用多种格式。这就是为什么我在代码中提到了根元素,
find()
用于子体,filter用于相同级别的html()
方法删除脚本。最好在插入内容后在主页中调用该脚本,或者可以使用$。getScript
这是一种ajax方法,用于获取脚本文件,该脚本文件将在接收后自动运行。html()将丢失脚本标记。这是一个安全出口,所以在页面中移动元素时脚本不会意外运行我接受你的答案。我不知道可以从普通字符串创建JQuery对象,因此可以对其调用.find。此外,这不是一个JSON应用程序。对吗?你能告诉我这件事吗?谢谢。不涉及json…就像我说的,你可以返回一个完整的html页面并执行此操作。JSON只是数据传递的一种格式,但ajax可以使用多种格式。这就是为什么我在代码中提到了根元素,find()
用于子体,filter用于相同级别的html()
方法删除脚本。最好在插入内容后在主页中调用该脚本,或者可以使用$。getScript
这是一种ajax方法,用于获取脚本文件,该脚本文件将在接收后自动运行。html()将丢失脚本标记。这是一个安全出口,因此在页面中移动元素时脚本不会意外运行
<div> <!--- root element wrapper, could even be full page which is excessive but works -->
<div id="first_section">
<!--- new content -->
</div>
<div id="second_section">
<!--- new content -->
</div>
</div>
$.get('path/to/server/', data, function(response){
/* create object from response*/
var $newHtml=$(response);
/* search response object for proper html to insert*/
$('#first_section').html( $newHtml.find('#first_section').html());
/* match for second section*/
})