长字符串会在Firefox中自动截断,而在Google Chrome中它会完美地运行

时间:2011-09-15 07:37:17

标签: javascript jquery asp.net web-services json

下面是我的代码块,我通过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上。

2 个答案:

答案 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。