jQuery.parseJSON() 未在 Windows 服务器上解码有效的 Json 字符串
jQuery.parseJSON() not decoding a valid Json string on a Windows server
我有这个 wordpress javascript 功能代码 运行 并在 Linux 服务器上工作以及 php 功能 "get_form_data"。
jQuery.ajax({
type: "POST",
url: MyAjax.ajaxurl,
data: {action: "get_form_data", id: id, cat_id: cat_id},
success: function(r) {
//alert(r);
var response = jQuery.parseJSON(r);
}
});
我将 wordpress 站点迁移到带有 IIS 和 PHP 的 Windows 8 服务器,现在它在 parseJSON 行中抛出一个错误,就像这样(它只发生在Windows环境):
SyntaxError: JSON.parse: JSON 数据
第 2 行第 1 列的意外字符
从 PHP 函数接收到的字符串正在被毫无问题地检索并且 Ajax 代码在字符串被解析之前进入成功状态(通过启用注释警报行),但是一旦 Json 解析函数尝试对其进行解码,它就会崩溃。 Json 字符串由 PHP 函数使用 json_encode() 编码。
这是Ajax函数接收到的字符串,据我所知这是一个有效的字符串。
["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"]
["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"] - JSON、http://www.w3schools.com/json/json_syntax.asp 无效。将您的数组包装到数组的对象)
不知何故,$.parseJSON 和 $.parseJSON 函数在带有 php 的 IIS 7 上对我不起作用,但它们在 Apache 上起作用。它总是在 IIS 上崩溃。我尝试了不同的方法来转换从 PHP 函数检索到的 javascript 中的 json 编码字符串,并尝试过滤掉斜杠和断行,但无济于事。在线 json 观众表明这是一个有效的 json 字符串。
对我有用的是使用老式的 eval ("(" + r + ")"),它的工作原理与 json 解析函数相同,缺点是使用起来显然不安全它,但我没有其他解决方案。
这对我来说似乎是一个有效的 JSON 数组。我以这种方式测试它没有问题:
var rawJson = '["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"]';
var json = JSON.parse(rawJson);
for(i = 0; i < json.length; i++) {
console.log(json[i]);
}
JSON parse 将字符串转换为 JSON,因此我在您的数组周围加上单引号以使其成为字符串。
也许你可以试试这个:
jQuery.ajax({
url: MyAjax.ajaxurl,
data: {action: "get_form_data", id: id, cat_id: cat_id},
dataType: "json",
success: function(data) {
// r should be the returned array
for(i = 0; i < data.length; i++) {
console.log(data[i]);
}
}
});
拆分 Return 数据:
在 C# asmx 中:
字符串 _json = "";
_json = getJsonFunction(_dataSet.Tables[0]);
_json += '`' + getJsonFunction(_dataSet.Tables[1]);
在Jquery中:
数据 = JSON.parse(res.d.split('`')[0]);
我有这个 wordpress javascript 功能代码 运行 并在 Linux 服务器上工作以及 php 功能 "get_form_data"。
jQuery.ajax({
type: "POST",
url: MyAjax.ajaxurl,
data: {action: "get_form_data", id: id, cat_id: cat_id},
success: function(r) {
//alert(r);
var response = jQuery.parseJSON(r);
}
});
我将 wordpress 站点迁移到带有 IIS 和 PHP 的 Windows 8 服务器,现在它在 parseJSON 行中抛出一个错误,就像这样(它只发生在Windows环境):
SyntaxError: JSON.parse: JSON 数据
第 2 行第 1 列的意外字符从 PHP 函数接收到的字符串正在被毫无问题地检索并且 Ajax 代码在字符串被解析之前进入成功状态(通过启用注释警报行),但是一旦 Json 解析函数尝试对其进行解码,它就会崩溃。 Json 字符串由 PHP 函数使用 json_encode() 编码。
这是Ajax函数接收到的字符串,据我所知这是一个有效的字符串。
["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"]
["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"] - JSON、http://www.w3schools.com/json/json_syntax.asp 无效。将您的数组包装到数组的对象)
不知何故,$.parseJSON 和 $.parseJSON 函数在带有 php 的 IIS 7 上对我不起作用,但它们在 Apache 上起作用。它总是在 IIS 上崩溃。我尝试了不同的方法来转换从 PHP 函数检索到的 javascript 中的 json 编码字符串,并尝试过滤掉斜杠和断行,但无济于事。在线 json 观众表明这是一个有效的 json 字符串。
对我有用的是使用老式的 eval ("(" + r + ")"),它的工作原理与 json 解析函数相同,缺点是使用起来显然不安全它,但我没有其他解决方案。
这对我来说似乎是一个有效的 JSON 数组。我以这种方式测试它没有问题:
var rawJson = '["New Day","2","One Song","John","2014-12-08 13:04:56","1843","22"]';
var json = JSON.parse(rawJson);
for(i = 0; i < json.length; i++) {
console.log(json[i]);
}
JSON parse 将字符串转换为 JSON,因此我在您的数组周围加上单引号以使其成为字符串。
也许你可以试试这个:
jQuery.ajax({
url: MyAjax.ajaxurl,
data: {action: "get_form_data", id: id, cat_id: cat_id},
dataType: "json",
success: function(data) {
// r should be the returned array
for(i = 0; i < data.length; i++) {
console.log(data[i]);
}
}
});
拆分 Return 数据: 在 C# asmx 中: 字符串 _json = "";
_json = getJsonFunction(_dataSet.Tables[0]); _json += '`' + getJsonFunction(_dataSet.Tables[1]);
在Jquery中: 数据 = JSON.parse(res.d.split('`')[0]);