从 http 处理程序返回的 JSON 在 IE8 中为 null 但在 IE10 或 Chrome 中不是
JSON returned from http handler is null in IE8 but not IE10 or Chrome
我有以下JavaScript
patients.prototype.GetPatient = function(patient_id,callback)
{
var xmlhttp;
var fullpath;
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var pat = parseJson(xmlhttp.response);
if (pat) {
callback(parseJson(xmlhttp.response));
}
else {
alert('Null object returned?');
}
}
else if (xmlhttp.status == 404) {
alert('Unable to find Retrieve Patient Service');
}
}
xmlhttp.open("GET", "RetrievePatient.ashx?PatientId=" + patient_id, true);
xmlhttp.send();
}
catch (e) {
alert('Unable to retrieve requested patient details');
}
}
function parseJson(jsonString) {
var res;
try {
alert('Parsing JSON');
res = JSON.parse(jsonString);
}
catch (e) {
alert('Call to evaluate result failed with error ' + e.message + ' Evaluating Json ' + jsonString );
};
return res;
}
如果这是 运行 来自 IE10 上 运行ning 页面的 运行,我会正确获取患者详细信息。如果我 运行 它在 Chrome 同样它 returns 返回患者的详细信息,但是如果我 运行 它在 IE8 的页面上 JSON 为空整个东西都掉下来了。
任何人都知道我可以做些什么来使这个在 IE8 中工作?
尝试在尝试解析之前检查是否为 null。另外,添加对 undefined
的检查
function parseJson(jsonString) {
var res;
if (jsonString == undefined) {
return jsonString;
}
if (jsonString == null) {
return jsonString;
}
if (window.JSON && window.JSON.parse ) {
res = JSON.parse(jsonString);
return res;
}
}
我有以下JavaScript
patients.prototype.GetPatient = function(patient_id,callback)
{
var xmlhttp;
var fullpath;
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var pat = parseJson(xmlhttp.response);
if (pat) {
callback(parseJson(xmlhttp.response));
}
else {
alert('Null object returned?');
}
}
else if (xmlhttp.status == 404) {
alert('Unable to find Retrieve Patient Service');
}
}
xmlhttp.open("GET", "RetrievePatient.ashx?PatientId=" + patient_id, true);
xmlhttp.send();
}
catch (e) {
alert('Unable to retrieve requested patient details');
}
}
function parseJson(jsonString) {
var res;
try {
alert('Parsing JSON');
res = JSON.parse(jsonString);
}
catch (e) {
alert('Call to evaluate result failed with error ' + e.message + ' Evaluating Json ' + jsonString );
};
return res;
}
如果这是 运行 来自 IE10 上 运行ning 页面的 运行,我会正确获取患者详细信息。如果我 运行 它在 Chrome 同样它 returns 返回患者的详细信息,但是如果我 运行 它在 IE8 的页面上 JSON 为空整个东西都掉下来了。
任何人都知道我可以做些什么来使这个在 IE8 中工作?
尝试在尝试解析之前检查是否为 null。另外,添加对 undefined
的检查function parseJson(jsonString) {
var res;
if (jsonString == undefined) {
return jsonString;
}
if (jsonString == null) {
return jsonString;
}
if (window.JSON && window.JSON.parse ) {
res = JSON.parse(jsonString);
return res;
}
}