以下是我的代码块,其中我通过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”:“ 15 Sep”,“ ActionDateTime”:
“ / Date(1316049833340 + 0530)/”,“ HTime”:“ 06:53:53”,“ UserName”:
“ Dev1Intellial”,“ Project_Name”:“ yrr”,“ EntityType”:“ Project”,
“ ActionType”:“已删除”,“ ID”:445,“ hID”:825},{“ HDate”:“ 15
Sep“,” ActionDateTime“:” / Date(1316049831280 + 0530)/“,” HTime“:
“ 06:53:51”,“ UserName”:“ Dev1Intellial”,“ Project_Name”:“ yrr”,
“ EntityType”:“项目”,“ ActionType”:“已删除”,“ ID”:445,
“ hID”:824},{“ HDate”:“ 15 Sep”,“ ActionDateTime”:
“ / Date(1316047802467 + 0530)/”,“ HTime”:“ 06:20:02”,“ UserName”:
“ 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”:“ 14 Sep”,
“ ActionDateTime”:“ / Date(1315984411087 + 0530)/”,“ HTime”:“ 12:43:31”,
“ UserName”:“ Dev1Intellial”,“ Project_Name”:
“ 1315049980_coraline.png”,“ EntityType”:“文件”,“ ActionType”:“是
已插入“,” ID“:50,” hID“:818},{” HDate“:” 14 Sep“,
“ ActionDateTime”:“ / Date(1315983619353 + 0530)/”,“ HTime”:“ 12:30:19”,
“用户名”:“ Dev1Intellial”,“项目名称”:“ stage3”,“ EntityType”:
“ Stage”,“ ActionType”:“已删除”,“ ID”:1266,“ hID”:817},{
“ HDate”:“ Sep 14”,“ ActionDateTime”:“ / Date(1315983554447 + 0530)/”,
“ HTime”:“ 12:29:14”,“ UserName”:“ Dev1Intellial”,“ Project_Name”:
“ fgdfgdfgdfg”,“ EntityType”:“步骤”,“ ActionType”:“已插入”,
“ ID”:1284,“ hID”:816},{“ HDate”:“ 14 Sep”,“ ActionDateTime”:
“ / Date(1315982622400 + 0530)/”,“ HTime”:“ 12:13:42”,“ UserName”:
“ 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”:“步骤”,“ ActionType”:“已插入”,“ ID”:1280,“ hID”:
798},{“ HDate”:“ 14 Sep”,“ ActionDateTime”:
“ / Date(1315980254543 + 0530)/”,“ HTime”:“ 11:34:14”,“ UserName”:
“ 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”:“阶段”,“ ActionType”:“已更新”,“ ID”:1251,“ hID”:
741},{“ HDate”:“ 14 Sep”,“ ActionDateTime”:
“ / Date(1315970792030 + 0530)/”,“ HTime”:“ 08:56:32”,“ UserName”:
“ Dev1Intellial”,“ Project_Name”:“步骤”,“ EntityType”:“步骤”,
“ ActionType”:“已更新”,“ ID”:1252,“ hID”:740},{“ HDate”:“ 14
Sep“,” ActionDateTime“:” / Date(1315970754793 + 0530)/“,” HTime“:
“ 08:55:54”,“ UserName”:“ Dev1Intellial”,“ Project_Name”:“ step”,
“ EntityType”:“步骤”,“ ActionType”:“已更新”,“ ID”:1252,“ hID”:
739},{“ HDate”:“ 14 Sep”,“ ActionDateTime”:
“ / Date(1315970743077 + 0530)/”,“ HTime”:“ 08:55:43”,“ UserName”:
“ Dev1Intellial”,“ Project_Name”:“步骤”,“ EntityType”:“步骤”,
“ ActionType”:“启动
是的,它不是有效的json字符串,因此当jQuery.parseJson函数尝试对其进行解析时,由于无效的json格式,它将引发错误。
在Google chrome中,一切顺利,没有错误。问题仅在于FireFox。
最佳答案
你应该试试这个
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;
}