Javascript 解析AJAX HTML响应:我可以找到元素,但无法访问其内部HTML或值?
我正在向一个.aspx脚本发出一个AJAX请求&它返回HTML。在JQuery中解析返回的HTML时遇到问题,比如我无法访问某些HTML元素值或innerHTML 你能告诉我我做错了什么吗?我怎样才能纠正它? 我调用脚本test.aspx&它只返回以下内容(绝对没有其他内容): 在上面的代码中,我可以使用$(msg.find(#clientIndex))找到ID为'clientIndex'和'clientContent'的对象但是我无法访问clientIndex的值?Ie,$(msg.find(#clientIndex”).val();返回空值 在上面的代码中,我可以使用$(msg.find(#clientIndex))找到ID为'clientIndex'和'clientContent'的对象 我很确定你找不到这样的东西Javascript 解析AJAX HTML响应:我可以找到元素,但无法访问其内部HTML或值?,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,我正在向一个.aspx脚本发出一个AJAX请求&它返回HTML。在JQuery中解析返回的HTML时遇到问题,比如我无法访问某些HTML元素值或innerHTML 你能告诉我我做错了什么吗?我怎样才能纠正它? 我调用脚本test.aspx&它只返回以下内容(绝对没有其他内容): 在上面的代码中,我可以使用$(msg.find(#clientIndex))找到ID为'clientIndex'和'clientContent'的对象但是我无法访问clientIndex的值?Ie,$(msg.find(
.find()
仍将返回一个jQuery对象,但我确信您会发现它的长度为0,因为找不到任何元素
问题是在选定元素的子代中查找匹配项。在您的例子中,正好有两个没有子体的“顶级”元素。解决方案是使用以下选项:
注意:我将$(msg)
的结果存储在一个名为$msg
的变量中,以将解析同一事物保存为一行两行
在上面的代码中,我可以使用$(msg.find(#clientIndex))找到ID为'clientIndex'和'clientContent'的对象
我很确定你找不到这样的东西.find()
仍将返回一个jQuery对象,但我确信您会发现它的长度为0,因为找不到任何元素
问题是在选定元素的子代中查找匹配项。在您的例子中,正好有两个没有子体的“顶级”元素。解决方案是使用以下选项:
注意:我将
$(msg)
的结果存储在一个名为$msg
的变量中,以保存对同一事物的连续两行分析。为什么不使用id$(“#clientIndex”).val()
@JIA在文档中查找它呢,我正在解析来自AJAX脚本的返回html,而afaik不是正文或文档的一部分?为什么不使用id$(“#clientIndex”).val()
@JIA在文档中查找它呢?我正在解析来自AJAX脚本的返回html,而afaik不是正文或文档的一部分?百万次感谢。我已经工作了将近两个小时来解决这个问题,但整个时间我只需要看看stackoverflow就可以找到最快的答案。百万次谢谢。我已经工作了将近两个小时来解决这个问题,但一直以来我只需要查看stackoverflow以获得最快的答案。
<input type="hidden" id="clientIndex" value="4"></input>
<div id="clientContent"> ...some html </div>
$.ajax(
{
type: "POST",
url: "test.aspx",
data: "i=" + $(".clientIndexClass:first").val(),
dataType: "html"
}).done(function (msg) {
// NOTE: msg has the correct html so its sending back the right formatted HTML
var index = $(msg).find("#clientIndex").val();
var content = $(msg).find("#clientContent").html();
// ERROR HERE: content is null & index is undefined when it shd be text for both
console.log("AJAX Response: " + index + ", " + content + ", " + msg);
$(treadmill).html($(treadmill).html() + content);
if (index == "-1") {
console.log("killing intervals coz = -1");
clearInterval(ele.ajaxInterval);
clearInterval(ele.slideshowInterval);
}
});
var $msg = $(msg),
index = $msg.filter("#clientIndex").val(),
content = $msg.filter("#clientContent").html();