解析成功函数中的返回数据永远不会起作用

时间:2012-12-07 13:00:54

标签: jquery ajax parsing

$.ajax({
    type : 'GET',
    url : 'dialog.php',
    data: {
        champion_name:champion_name
    },
    dataType: "text",
    success : function(data){
        alert(data);
        var dataStr = $(data).find('h2').html();
        $('#champImg').find('div').html(dataStr);

    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        alert('failed');
    }
});

我试图在success函数中解析返回的数据,因为我需要在一个div中添加一些元素,在其他div中添加其他元素。

然而,$(data).find('h2').html()永远不会奏效 我尝试了一切可能的方法,包括将dataType更改为html,但它正在运作。

返回的数据有效,因为我看到它成功提醒dialog.php的html代码。只有$(data).find('h2').html()不起作用!

2 个答案:

答案 0 :(得分:3)

它失败了,因为没有外部元素,因此选择返回两个元素。然后查找当前元素的子搜索,但是您的选择会返回两个元素,一个用于image,另一个用于h2,而不是h2 - 子元素

如果html已经

<div>
   <img class='style2' 
        border='2' 
        src='$imgPath' 
        style='width:165px;height:232px;'>   
   <h2>hello</h2>
</div>

它会起作用。

如果您不能/不会更改返回的html,您可以将成功句柄更改为

function(data){
  alert(data);
  var dataStr = $(data)[1].html();
  $('#champImg').find('div').html(dataStr);
}

答案 1 :(得分:1)

您可以使用jQuery filter方法代替find

var dataStr = $(data).filter("h2").html();

以下是jsFiddle:http://jsfiddle.net/5zWHa/

的示例