Javascript 解析AJAX HTML响应:我可以找到元素,但无法访问其内部HTML或值?

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(

我正在向一个.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'的对象

我很确定你找不到这样的东西
.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();