我正在向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选项卡中看到的内容:
HTML标签:
答案 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,而不是纯文本。您有两种可能的选择:
$rate = ups($dest_zip,$service,$weight,$length,$width,$height);
$x = simplexml_load_string($rate);
echo $x->RatedShipment->TransportationCharges->MonetaryValue;
编辑:只是注意到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。我不知道它是否正确,所以我会让其他人解决它。