无法查询$ .post返回的数据

时间:2011-12-04 19:40:49

标签: jquery jquery-selectors

 $.post( url, JSON_POST,
    function( data ) {
      var content = $( data );
          var content = $( data ).find( '#json' );
        console.log(data);
           console.log(content);
      }
    );

第一个console.log的结果是

<div id="json">{"status":1,"message":"Reply submitted successfully."}</div> 
<div id="test">sdfsafdsfds</div>

但由于某种原因,第二个日志返回一个空数组。我试图查询数据变量中的html,但结果始终是空集。

我真的很感谢帮助我。我查看了$ .post手册,但没有提到这个问题。

P.S我正在使用JQUERY 1.7

2 个答案:

答案 0 :(得分:3)

find查找所选元素的后代。在您的情况下,两个元素都没有后代,更不用说ID json

相反,您正在寻找所选元素的特定元素。在这种情况下,您应该filter [docs]当前元素:

var content = $(data).filter('#json');

答案 1 :(得分:1)

你在XML中使用容器元素吗? 也许这会导致问题。

必须在xml中使用root元素来获得正确的解析。因此,您的XML响应应如下所示:

<root>
    <div id="json">{"status":1,"message":"Reply submitted successfully."}</div> 
    <div id="test">sdfsafdsfds</div>
</root>

<root>元素可以是您喜欢的任何内容,例如:<foo><div>


是的,这是你的问题。

在javascript控制台中试试这个:

var asd = '<div id="json">{"status":1,"message":"Reply submitted successfully."}</div><div id="test">sdfsafdsfds</div>'

console.log($(asd).find("#json")) > []
console.log($("<root>"+asd+"</root>").find("#json")) > [<div id="json">{"status":1,"message":"Reply submitted successfully."}</div>]