Javascript 附加时编辑结果?
我有以下脚本,它将从服务器端页面返回的数据显示在客户端页面上:Javascript 附加时编辑结果?,javascript,jquery,Javascript,Jquery,我有以下脚本,它将从服务器端页面返回的数据显示在客户端页面上: function getResults() { var search; search = $(".txtSearch").val(); $.ajax({ url: 'search.aspx', type: 'POST', data: { strPhrase:search }, error: function(xhr, status, err
function getResults() {
var search;
search = $(".txtSearch").val();
$.ajax({
url: 'search.aspx',
type: 'POST',
data: { strPhrase:search },
error: function(xhr, status, error)
success: function(results)
{
$("#ResultsContainer").empty();
$("#ResultsContainer").append(results);
}
});
}
是否可以在追加结果时检查返回的结果并对其进行更改
例如,假设返回的结果是html,如下所示:
<div><a href="link1.xls">link 1</a></div>
<div><a href="link2.xls">link 2</a></div>
<div><a href="link3.doc">link 3</a></div>
<div><a href="link4.xls">link 4</a></div>
是否可以检查链接中的.doc并删除该链接周围的完整div,只留下以下内容
<div><a href="link1.xls">link 1</a></div>
<div><a href="link2.xls">link 2</a></div>
<div><a href="link4.xls">link 4</a></div>
是,请尝试以下操作:
success: function(results)
{
var $results = $(results);
$results.find('a[href$=doc]').parent().remove();
$("#ResultsContainer").empty().append($results);
}
这会将结果
放在jQuery对象中,将字符串转换为DOM元素
然后它使用来定位嵌套的doc
然后它遍历到它的元素,然后
请注意,它附加了已修改的$results
。不是原始的结果
字符串。是,请尝试以下操作:
success: function(results)
{
var $results = $(results);
$results.find('a[href$=doc]').parent().remove();
$("#ResultsContainer").empty().append($results);
}
这会将结果
放在jQuery对象中,将字符串转换为DOM元素
然后它使用来定位嵌套的doc
然后它遍历到它的元素,然后
请注意,它附加了已修改的$results
。不是原始的结果
字符串。我自己没有使用它,但是jQuery.ajax使用了一个dataFilter
成员,它是一个回调,在成功
处理程序看到数据之前对数据进行清理
查看文档-我自己还没有使用过它,但是jQuery.ajax使用了一个dataFilter
成员,它是一个回调,在成功
处理程序看到数据之前对数据进行清理
查看文档-如果您的aspx页面返回一个没有“doc”链接的html片段,即使您以后可以在ajax回调中进行过滤,从性能角度考虑,这会更好
如果您发送一个带有包含url的简单对象的json(到非文档文件)会更好,因为您有很多冗余代码。从性能角度考虑,如果您的aspx页面返回一个不带“doc”链接的html片段会更好,即使您以后可以在ajax回调中进行过滤
如果您发送一个包含url的简单对象的json(到非文档文件)会更好,因为您有很多冗余代码。
当它们被附加时
您的意思是,当它们从服务器发送到客户机时,我会说可能不会(或者不使用jQuery)。Prototype有一个回调onInteractive-(不保证),每当请求者收到响应的一部分(但不是最后一部分)时触发,如果它以多个数据包的形式发送。
可能会这样做,但即使如此,也很难处理数据块
如果你说你可以控制发送者,你应该实现一个分页系统:在第一个请求中,服务器脚本返回你,比如说,10个结果和总页数。您可以处理这些结果(如果愿意,可以显示它们),然后请求下一页,依此类推
您还应该通过将筛选条件发送到脚本(如果可能)在服务器上进行筛选。
当它们被附加时
您的意思是,当它们从服务器发送到客户机时,我会说可能不会(或者不使用jQuery)。Prototype有一个回调onInteractive-(不保证),每当请求者收到响应的一部分(但不是最后一部分)时触发,如果它以多个数据包的形式发送。
可能会这样做,但即使如此,也很难处理数据块
如果你说你可以控制发送者,你应该实现一个分页系统:在第一个请求中,服务器脚本返回你,比如说,10个结果和总页数。您可以处理这些结果(如果愿意,可以显示它们),然后请求下一页,依此类推
您还应该通过向脚本发送筛选条件在服务器上进行筛选(如果可能)。第一个问题是:您是否可以控制服务器端页面?@alin:您说得对。如果他能在服务器端优化结果,即使是最好的延迟筛选也应该避免。谢谢你同意我的意见,但我认为你这样做的原因是错误的:)。我想知道的是,为了回答他的第一个问题,这里的每个人都回避这个问题,只是回答了简单的问题。我理解,但我的观点是,有时候最好多提一个问题,而不是提出脑海中的第一个解决方案。:)第一个问题是:你能控制服务器端页面吗?@alin:你说得对。如果他能在服务器端优化结果,即使是最好的延迟筛选也应该避免。谢谢你同意我的意见,但我认为你这样做的原因是错误的:)。我想知道的是,为了回答他的第一个问题,这里的每个人都回避这个问题,只是回答了简单的问题。我理解,但我的观点是,有时候最好多提一个问题,而不是提出脑海中的第一个解决方案。:)谢谢,我会尽快试用。谢谢,我会尽快试用。我需要根据客户端计算机上包含的文件筛选结果。是的,我同意json在这里是最好的。我需要根据客户端计算机上包含的文件过滤结果。是的,我同意json在这里是最好的。