jQuery ajax请求php,如何只返回纯文本

时间:2010-12-30 00:24:49

标签: php jquery ajax xmlhttprequest

我正在向php页面发出一个ajax请求,我不能为了我的生活而得到它只返回纯文本。

    $.ajax({
       type: 'GET',
       url: '/shipping/test.php',
       cache: false,
       dataType: 'text',
       data: myData,   
       success: function(data){
        console.log(data)
       }   
     });

在test.php中我包括this script以获得UPS费率。然后我用$rate = ups($dest_zip,$service,$weight,$length,$width,$height);

调用该函数

我在test.php的底部做echo $rate;。在浏览器中查看显示费率时,这很好。但是当我通过ajax请求页面时,我得到了一堆XML。 Pastie:http://pastie.org/1416142

我的问题是,如何获取它以便我可以从ajax调用返回纯文本字符串,其中结果data将是一个数字?

编辑,这是我在Firebug- Response选项卡中看到的内容:

alt text

HTML标签:

alt text

4 个答案:

答案 0 :(得分:2)

您使用的PHP脚本输出XML。查看upsRate.php,您将在字符串中看到一大堆XML。

此外,您可能想要注释掉upsRate.php的第96行,因为它会输出一些注释,当您使用ajax获取页面时,您会看到这些注释。

答案 1 :(得分:2)

不要压制XML,使用它。这就是AJAX一直以来的目的。您将希望简单地解析XML并从中获取所需的数据,幸运的是,JQuery非常容易。

首先,切换您的AJAX数据类型:

dataType: 'xml'

然后,在你的ajax响应处理程序中:

alert($(xml_data).find("PriceXMLNodeName").text());

您当然必须找出并将PriceXMLNodeName替换为价格在XML响应中的节点的实际名称。我无法从您的屏幕截图中看到节点名称。看起来应该很简单(不管价格的标签名称是什么)。

答案 2 :(得分:1)

看起来ups()函数返回XML,而不是纯文本。您有两种可能的选择:

  1. 检查您使用的API是否提供了返回纯文本而不是XML的函数。这可能是理想的解决方案。
  2. 自己解析XML,并回应你感兴趣的价值。以下应该可以解决问题:
    $rate = ups($dest_zip,$service,$weight,$length,$width,$height);
    $x = simplexml_load_string($rate);
    echo $x->RatedShipment->TransportationCharges->MonetaryValue;
  3. 编辑:只是注意到ups()函数echo是HTML注释中的HTTP标头和响应XML,所以它实际上除了弄乱你之外什么都不做。如果可能的话,从ups()删除那个echo语句,你应该是金色的。

答案 3 :(得分:1)

我将把它作为答案,因为它解决了即时解决方案,抑制了xml输出。 Taken from this SO question

ob_start();
$rate = ups($dest_zip,$service,$weight,$length,$width,$height);
ob_end_clean();

这允许我使用$ rate var(包含我想要的值)w / out xml。我不知道它是否正确,所以我会让其他人解决它。