【问题标题】:How to extract data from AJAX's responseText?如何从 AJAX 的 responseText 中提取数据?
【发布时间】:2012-02-26 12:16:45
【问题描述】:

当我使用 responseText 时,我得到了所有数据。从<HTML></HTML>。如何提取它的特定部分?例如,我有这样的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Tester</title>
    </head>

    <body>

        <table>
            <tr>
                <td><a name="Name"></a>Name</td>
                <td>John</td>
            </tr>
            <tr>
                <td><a name="Email"></a>Email</td>
                <td>john@aol.com</td>
            </tr>
            <tr>
                <td><a name="Address"></a>Address</td>
                <td>123 Elm Street</td>
            </tr>
            <tr>
                <td><a name="City"></a>City</td>
                <td>Los Angeles</td>
            </tr>
            <tr>
                <td><a name="State"></a>State</td>
                <td>CA</td>
            </tr>
        </table>

    </body>
</html>

然后我需要像城市部分一样提取洛杉矶。我该怎么做呢?我不能做 responseText.getElementByTagName 或类似的事情。

这是 AJAX 调用:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    var pageContents = xmlhttp.responseText;
    document.getElementById("myDiv").innerText = pageContents;

    }
  }
xmlhttp.open("GET","content.html",false);
xmlhttp.send();

【问题讨论】:

  • 也许您也应该发布您的 ajax 调用。这个网站上没有多少人喜欢猜测你在用你的 js 做什么。
  • 也许我不明白你的问题......但你为什么不明白?您可以在调用页面中启动一个全局范围的变量,使用 ajax 页面设置值,然后让您的 ajax 页面从调用页面执行您想要的任何脚本。

标签: javascript ajax responsetext


【解决方案1】:

对于纯 JavaScript 解决方案,请尝试(未经测试):

var city = responseXML.getElementsByName('City').parentNode.nextElementSibling.childNodes[0].getAttribute('textContent');

也就是说,像 jQuery 这样的 JavaScript 库可以完成繁重的工作,这肯定会使您的代码更易于阅读(并且对跨浏览器友好)。

【讨论】:

  • getElementsByTagName 将获得 &lt;City&gt; 元素,而不是名称为 City 的元素。你想要getElementsByName
  • 嗯,每次我尝试将 getElementsByName 或 ID 添加到 xmlhttp.responseText 时,我都会得到 Object 在 IE 中不支持此属性,并且 FF 不显示任何内容。
  • 使用responseXML,而不是responseText
【解决方案2】:

jQuery 命名这个(有点)简单:

alert($('table').find('tr').eq(3).find('td').eq(1).html()) ---> 洛杉矶

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2020-04-30
    相关资源
    最近更新 更多