在jQuery中提取Ajax返回数据

ven*_*lam 42 ajax jquery callback

我已经完成了jQuery和Ajax,但我无法将响应转换为Div元素.这是代码:

的index.html

$.ajax({
    type:"POST",
    url: "ajax.php",
    data:"id="+id ,
    success: function(html){
        $("#response").html(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

它收到了对我的回复<div id="response"></div>.

ajax.php下面的代码回报index.html文件:

<div id ="one"> OneVal </div>
<div id ="sub"> SubVal </div>
Run Code Online (Sandbox Code Playgroud)

我是否能够将OneVal和Subval提取到变量中,如何提取"OneVal"和"SubVal"而不是上面的响应?

red*_*are 83

您可以.filter在从响应创建的jQuery对象上使用:

success: function(data){
    //Create jQuery object from the response HTML.
    var $response=$(data);

    //Query the jQuery object for the values
    var oneval = $response.filter('#one').text();
    var subval = $response.filter('#sub').text();
}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,我调整上面使用.html()而不是.text()b/ci需要检索完整的html而不仅仅是文本字符串.即`var oneval = $ response.filter('#one').html();` (6认同)

red*_*are 17

更改.find.filter...

  • 在我看到你的跟进之前花了30分钟玩这个.编辑包括过滤器:D (2认同)
  • @Yves Van Broekhoven因为没有包装根元素所以jquery对象包含多个根节点,你必须过滤它们 (2认同)

小智 12

我注意到你的成功函数有参数"html",你试图在你的元素中添加"数据" html()......改变它以使它们都匹配:

$.ajax({
    type:"POST",
    url: "ajax.php",
    data:"id="+id ,
    success: function(data){
        $("#response").html(data);
    }
});
Run Code Online (Sandbox Code Playgroud)