【问题标题】:ajax - return only part of responsetextajax - 只返回响应文本的一部分
【发布时间】:2011-08-22 11:00:21
【问题描述】:

以下只是我的 ajax 代码的一部分,目前我的变量“resp”正在从 test.php 返回整个响应。有什么方法可以在指定标签之间返回 responseText 吗? IE。只需取回 id="xyz" 的 test.php 的 div 中的 html 的 responseText?

var loc="test.php?myinput=apple";
ajax.onreadystatechange=function() {
        if (ajax.readyState==4  && ajax.status == 200) {    
            var resp =  ajax.responseText;
        }
    }
ajax.open("GET",loc,true);
ajax.send(null);

【问题讨论】:

  • 您可以使用库来解析响应 HTML,然后通过 CSS 选择器找到 DIV。像这样:$(resp).find('#xyz')
  • 如果您对 DIV 的源文本内容感兴趣,我建议您使用服务器端脚本来返回它而不是通过 JavaScript 搜索它。

标签: javascript html xml ajax


【解决方案1】:

将您的 ajax 代码更改为:

if (ajax.readyState==4  && ajax.status == 200) {    
   eval(ajax.responseText);
}

然后在 test.php 页面中,这样写响应

echo "document.getElementById('xyz').innerHTML='abc';";

【讨论】:

    【解决方案2】:

    如果您愿意切换到 jQuery,您可以执行以下操作

    $.ajax({
        url: 'test.php?myinput=apple',
        method: 'POST',
        success : function( data ) {
            var content = $(data).find('#xyz').text();
            // alternativly the HTML
            // var content = $(data).find('#xyz').html();
        }
    });
    

    【讨论】:

      【解决方案3】:

      您是否尝试使用该响应更新 HTML 的某些部分? 如果是这样,您可以使用jQuery 并调用接受特殊URL 参数的load 方法来加载返回的HTML 的一部分:

      工作示例:http://jsfiddle.net/marcosfromero/P5KTv/

      【讨论】:

        【解决方案4】:

        您可以使用 jquery 速记函数 load() 快速完成此操作

        $('#result').load('test.php' #container');
        

        这里的结果是你想要放置响应文本的 div 和 container 是你指定的 test.php 的源元素位置

        这是你想要的吗?

        【讨论】: