【问题标题】:Extracting Ajax return data in jQuery在jQuery中提取Ajax返回数据
【发布时间】:2008-12-30 13:01:28
【问题描述】:

我已经完成了 jQuery 和 Ajax,但我无法将响应放入 Div 元素。这是代码:

Index.html

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

它正在收到我的<div id="response"></div>的回复。

ajax.php 将以下代码返回到index.html 文件:

<div id ="one"> OneVal </div>
<div id ="sub"> SubVal </div>

我能否将 OneVal 和 Subval 提取到变量中,如何提取“OneVal”和“SubVal”,而不是上述响应?

【问题讨论】:

  • var plz=$response.find('#title').text();警报(请);它抛出空值,我是否需要做任何其他事情来获取值

标签: jquery ajax callback


【解决方案1】:

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

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();
}

【讨论】:

  • 我是 jQuery 新手,但我需要 var $response(data.d) 才能让它工作。 添加了 .d
  • 对我来说,我将上面的内容调整为使用 .html() 而不是 .text() b/c 我需要检索完整的 html 而不仅仅是文本字符串。即var oneval = $response.filter('#one').html();
  • if (data.d) { data = data.d }
【解决方案2】:

.find 更改为.filter...

【讨论】:

  • 花了 30 分钟玩这个才看到你的跟进。编辑以包含过滤器:D
  • 你能解释一下为什么你不能在这里使用 .find() 吗?我已经测试过了,确实你在使用 .filter() 时得到了结果,但在使用 .find() 时却没有......
  • @Yves Van Broekhoven 因为没有包装根元素,所以 jquery 对象包含多个必须过滤的根节点
  • 谢谢!!你为我节省了很多时间。
【解决方案3】:

我注意到您的成功函数具有参数“html”,并且您正在尝试将“数据”添加到您的元素 html()... 更改它以使它们都匹配:

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

【讨论】:

    【解决方案4】:

    你可以像下面的例子一样使用json

    PHP代码:

    echo json_encode($array);
    

    $array为数组数据,jQuery代码为:

    $.get("period/education/ajaxschoollist.php?schoolid="+schoolid, function(responseTxt, statusTxt, xhr){
        var a = JSON.parse(responseTxt);
        $("#hideschoolid").val(a.schoolid);
        $("#section_id").val(a.section_id);
        $("#schoolname").val(a.schoolname);
        $("#country_id").val(a.country_id);
        $("#state_id").val(a.state_id);
    }
    

    【讨论】:

    • 结尾“}”呢?
    【解决方案5】:

    您也可以使用 jQuery context 参数。 Link to docs

    选择器上下文

    默认情况下,选择器在 DOM 中执行搜索 在文档根目录。但是,可以为 使用 $() 函数的可选第二个参数进行搜索

    因此你也可以有:

    success: function(data){
        var oneval = $('#one',data).text();
        var subval = $('#sub',data).text();
    }
    

    【讨论】:

      【解决方案6】:
      on success: function (response) { alert(response.d); }
      

      【讨论】:

      • 您能否再解释一下该放在哪里以及它的作用?否则可能很难理解您在此处试图传达的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2018-01-20
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多