gpt4 book ai didi

javascript - 以 HTML 格式操作 AJAX 响应

转载 作者:行者123 更新时间:2023-12-02 15:17:34 25 4
gpt4 key购买 nike

我正在使用 AJAX 请求返回“原始”HTML 内容,然后我计划在将其呈现在页面上之前对其进行操作。 AJAX 请求返回 HTML 数据:

function AjaxTest(url){
$.ajax({
url: "index.aspx?" + url,
success: function(result){gatherData(result)},
dataType: 'html'
});
}

然后,我调用另一个名为 gatherData(result) 的函数,并将 AJAX 请求的结果作为函数参数。

function gatherData(data){
var $data = $(data);

tables = $data.find('body table');

此时,我的 tables var 为空,但我希望它引用 AJAX 响应正文中找到的表。有什么方法可以操作通过返回的 HTML。渲染之前的 AJAX 请求?下面是 AJAX 请求的 HTML 响应。我需要做的就是访问体内的表格。

<!DOCTYPE HTML><html>
<HEAD>
<title></title>
</HEAD>
<BODY>
<TABLE border=1 cellspacing=0 cellpadding=0 alignment="">
<TBODY>
<TR><TD>x-value</TD><TD>Financial Plan</TD></TR><TD>09/11/2015</TD>
<TD>0</TD>
</TR><TD>10/11/2015</TD>
<TD>0</TD>
</TR><TD>11/11/2015</TD>
<TD>0</TD>
</TR><TD>12/11/2015</TD>
<TD>0</TD>
</TR><TD>13/11/2015</TD>
<TD>0</TD>
</TR><TD>14/11/2015</TD>
<TD>0</TD>
</TR><TD>15/11/2015</TD>
<TD>0</TD>
</TR></TBODY></TABLE><TABLE border=1 cellspacing=0 cellpadding=0 alignment="">
<TBODY>
<TR><TD>x-value</TD><TD>Business Forecast</TD></TR><TD>09/11/2015</TD>
<TD>0</TD>
</TR><TD>10/11/2015</TD>
<TD>0</TD>
</TR><TD>11/11/2015</TD>
<TD>0</TD>
</TR><TD>12/11/2015</TD>
<TD>0</TD>
</TR><TD>13/11/2015</TD>
<TD>0</TD>
</TR><TD>14/11/2015</TD>
<TD>0</TD>
</TR><TD>15/11/2015</TD>
<TD>0</TD>
</TR></TBODY></TABLE><TABLE border=1 cellspacing=0 cellpadding=0 alignment="">
<TBODY>
<TR><TD>x-value</TD><TD>Operational Planned</TD></TR><TD>09/11/2015</TD>
<TD>0</TD>
</TR><TD>10/11/2015</TD>
<TD>0</TD>
</TR><TD>11/11/2015</TD>
<TD>66358</TD>
</TR><TD>12/11/2015</TD>
<TD>65990</TD>
</TR><TD>13/11/2015</TD>
<TD>55993</TD>
</TR><TD>14/11/2015</TD>
<TD>0</TD>
</TR><TD>15/11/2015</TD>
<TD>0</TD>
</TR></TBODY></TABLE><TABLE border=1 cellspacing=0 cellpadding=0 alignment="">
<TBODY>
<TR><TD>x-value</TD><TD>Actual</TD></TR><TD>09/11/2015</TD>
<TD>0</TD>
</TR><TD>10/11/2015</TD>
<TD>0</TD>
</TR><TD>11/11/2015</TD>
<TD>62202</TD>
</TR><TD>12/11/2015</TD>
<TD>59261</TD>
</TR><TD>13/11/2015</TD>
<TD>49119</TD>
</TR><TD>14/11/2015</TD>
<TD>0</TD>
</TR><TD>15/11/2015</TD>
<TD>0</TD>
</TR></TBODY></TABLE>

</BODY>
</HTML>

最佳答案

有什么方法可以操作通过返回的 HTML。渲染之前的 AJAX 请求?

简而言之:是的!

如何?

您实际上做得正确,但部分正确,您需要有一个虚拟元素来存储响应,并且该元素可用于在渲染之前操作数据,在 javascript document.createElement() 中可以使用 $('<tag>',{option:option})可以使用:

function gatherData(data){
var $data = $(data),
tables = $data.find('table'),
div = $('<div>', {html:tables});



div.find('table').each(function(){
$(this).find('td').append('dynamicValues.')
});

$(document.body).append(div);

}

检查下面的代码片段:

var table = '<table><tr><td>one</td><td>two</td><td>three</td></tr></table>';

var div = $('<div>',{ html:table});

$(div).find('td').append(' dynamic values.');

$(document.body).append(div);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<小时/>

您能解释一下为什么需要这样做吗? – 蝎狮

当提出这个问题时,我会说答案是 string值有一些 html标签,所以直接 htmlstring 很难操作,所以最好的方法是按照上面的建议在内存中创建一个虚拟元素并将 htmlstring 放入其中,现在可以使用 javascript 来操作它,因为它现在已被放置为有效的html。

关于javascript - 以 HTML 格式操作 AJAX 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com