下面是我的代码块,我通过Web服务检索一个json字符串。
是的,它是XML标记。所以我读了这个标签并使用jQuery解析器解析它 jQuery.parseJSON(xml.getElementsByTagName(“string”)[0] .firstChild.nodeValue);
$.ajax({ type: "POST",
url: "http://localhost:14734/services/Project.asmx/GetProjectHistory",
dataType: "xml",
processData: true,
error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); },
success: function(xml) {
var t = xml.getElementsByTagName("string")[0].firstChild.nodeValue;
alert(t);
var data = jQuery.parseJSON(xml.getElementsByTagName("string")[0].firstChild.nodeValue);
GetProjectsActivity(data);
GetUpcommingTask(data);
// alert(data);
}
});
我按照预期得到完整的字符串响应。但在FireFox中我看到该字符串被截断。
jQuery.parseJSON(xml.getElementsByTagName(“string”)
[0] .firstChild.nodeValue);
截断的字符串如下......
{“List”:{“Table”:[{“HDate”:“9月15日”,“ActionDateTime”: “/日期(1316049833340 + 0530)/”,“HTime”:“06:53:53”,“用户名”: “Dev1Intellial”,“Project_Name”:“yrr”,“EntityType”:“Project”, “ActionType”:“已删除”,“ID”:445,“hID”:825},{“HDate”:“15 Sep“,”ActionDateTime“:”/日期(1316049831280 + 0530)/“,”HTime“: “06:53:51”,“UserName”:“Dev1Intellial”,“Project_Name”:“yrr”, “EntityType”:“Project”,“ActionType”:“已删除”,“ID”:445, “hID”:824},{“HDate”:“9月15日”,“ActionDateTime”: “/日期(1316047802467 + 0530)/”,“HTime”:“06:20:02”,“用户名”: “Dev1Intellial”,“Project_Name”:“yrr”,“EntityType”:“Project”, “ActionType”:“已插入”,“ID”:445,“hID”:823},{“HDate”:“14 Sep“,”ActionDateTime“:”/ Date(1315984624977 + 0530)/“,”HTime“: “12:47:04”,“UserName”:“Dev1Intellial”,“Project_Name”: “1315049911_administrator.png”,“EntityType”:“文件”,“ActionType”: “已插入”,“ID”:51,“hID”:819},{“HDate”:“9月14日”, “ActionDateTime”:“/ Date(1315984411087 + 0530)/”,“HTime”:“12:43:31”, “UserName”:“Dev1Intellial”,“Project_Name”: “1315049980_coraline.png”,“EntityType”:“文件”,“ActionType”:“是 已插入“,”ID“:50,”hID“:818},{”HDate“:”9月14日“, “ActionDateTime”:“/ Date(1315983619353 + 0530)/”,“HTime”:“12:30:19”, “UserName”:“Dev1Intellial”,“Project_Name”:“stage3”,“EntityType”: “Stage”,“ActionType”:“已删除”,“ID”:1266,“hID”:817},{ “HDate”:“9月14日”,“ActionDateTime”:“/日期(1315983554447 + 0530)/”, “HTime”:“12:29:14”,“UserName”:“Dev1Intellial”,“Project_Name”: “fgdfgdfgdfg”,“EntityType”:“Step”,“ActionType”:“已插入”, “ID”:1284,“hID”:816},{“HDate”:“9月14日”,“ActionDateTime”: “/日期(1315982622400 + 0530)/”,“HTime”:“12:13:42”,“用户名”: “Dev1Intellial”,“Project_Name”:“sdfsdssdfs”,“EntityType”:“Step”, “ActionType”:“已插入”,“ID”:1281,“hID”:799},{“HDate”:“14 Sep“,”ActionDateTime“:”/ Date(1315982619307 + 0530)/“,”HTime“: “12:13:39”,“UserName”:“Dev1Intellial”,“Project_Name”:“sdfsdssdfs”, “EntityType”:“Step”,“ActionType”:“已插入”,“ID”:1280,“hID”: 798},{“HDate”:“9月14日”,“ActionDateTime”: “/日期(1315980254543 + 0530)/”,“HTime”:“11:34:14”,“用户名”: “Dev1Intellial”,“Project_Name”:“stage1”,“EntityType”:“Stage”, “ActionType”:“已删除”,“ID”:1255,“hID”:792},{“HDate”:“14 Sep“,”ActionDateTime“:”/ Date(1315970910450 + 0530)/“,”HTime“: “08:58:30”,“UserName”:“Dev1Intellial”,“Project_Name”:“stage”, “EntityType”:“Stage”,“ActionType”:“已更新”,“ID”:1251,“hID”: 741},{“HDate”:“9月14日”,“ActionDateTime”: “/日期(1315970792030 + 0530)/”,“HTime”:“08:56:32”,“用户名”: “Dev1Intellial”,“Project_Name”:“step”,“EntityType”:“Step”, “ActionType”:“已更新”,“ID”:1252,“hID”:740},{“HDate”:“14 Sep“,”ActionDateTime“:”/ Date(1315970754793 + 0530)/“,”HTime“: “08:55:54”,“UserName”:“Dev1Intellial”,“Project_Name”:“step”, “EntityType”:“Step”,“ActionType”:“已更新”,“ID”:1252,“hID”: 739},{“HDate”:“9月14日”,“ActionDateTime”: “/日期(1315970743077 + 0530)/”,“HTime”:“08:55:43”,“用户名”: “Dev1Intellial”,“Project_Name”:“step”,“EntityType”:“Step”, “ActionType”:“已启动
是的,它不是一个有效的json字符串,所以当jQuery.parseJson函数试图解析它时,它会因为无效的json格式而抛出错误。
在Google Chrome中,一切顺利,没有错误。问题仅出在FireFox上。
答案 0 :(得分:1)
你应该试试这个..
https://bugzilla.mozilla.org/show_bug.cgi?id=194231
function nodeValue(xmlTag){
if(xmlTag.firstChild.textContent && xmlTag.normalize) {
xmlTag.normalize(xmlTag.firstChild);
content=xmlTag.firstChild.textContent;
} else if(xmlTag.firstChild.nodeValue) {
content=xmlTag.firstChild.nodeValue;
} else {
content=null;
}
return content;
}
答案 1 :(得分:0)
alert对话框会截断许多浏览器中的字符数。这是设计使然,因为大的警报窗口会很笨重。
最佳解决方案是使用console.log(data)
,它会将数据打印到Firebug / Developer Tools。