我有关于ajax的responseXML的问题.. 我有来自回调函数的代码:
var lineString = responseXML.getElementsByTagName('linestring')[0].firstChild.nodeValue;
但是,线串最多只能容纳4096个字符..其余字符将被拒绝。
我不知道用什么来获取lineString的所有值 回报。它是一个非常大的数据,这就是为什么我想使用responseXml AJAX,但事实证明它仍然无法容纳一切。
我的线串由来自我连接的日志文件中的行组成 放线分隔符。我需要以我的形式获取这些数据,这就是为什么在从php读取后,我通过AJAX发回它
你有意见吗?答案 0 :(得分:2)
XML为大多数ajax请求添加了大量额外标记。如果您期望某种类型的数据实体列表,那么以JSON格式发送它们是可行的方法。
我使用JSON来获取数据非常庞大的数组。
首先,JSON只是Javascript Object Notation,这意味着Ajax请求将请求一个实际上将被评估为Javascript对象的String。
某些浏览器提供开箱即用的JSON解析支持。其他需要一点帮助。我已经使用this little library来解析我开发的所有webapps中的responseText,并且没有任何问题。
既然你知道JSON是什么以及如何使用它,那么这就是PHP代码的样子。
$response = [
"success" => true, // I like to send a boolean value to indicate if the request
// was valid and ok or if there was any problem.
"records" => [
$dataEntity1, $dataEntit2 //....
]
];
echo json_enconde($response );
尝试一下,看看它是什么样的回声。我使用了PHP 5.4数组声明语法,因为它很酷! :)
通过Ajax请求数据时,您可以这样做:
var response
,xhr = getAjaxObject(); // XMLHttp or ActiveX or whatever.
xhr.open("POST","your url goes here");
xhr.onreadystatechange=function() {
if (xhr.readyState==4 && xhr.status==200) {
try {
response = JSON.parse(xhr.responseText);
} catch (err) {
response = {
success : false,
//other error data
};
}
if(response.success) {
//your data should be in response
// response.records should have the dataEntities
console.debug(response.records);
}
}
}
回顾:
此外,如果您使用的是jQuery,则只需在$ .ajax调用中设置dataType:“json”属性即可在成功回调中接收JSON响应。