我有这个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"]
答案 0 :(得分:2)
[" New Day"," 2"," One Song"," John"," 2014-12- 08 13:04:56"," 1843"," 22"] - 是无效的JSON,http://www.w3schools.com/json/json_syntax.asp。将数组包装到数组对象中
答案 1 :(得分:1)
不知何故,$ .parseJSON和$ .parseJSON函数在IIS 7上使用php不起作用,但它们可以在Apache上运行。在IIS上它总是在我身上崩溃。我尝试了不同的东西来转换从PHP函数检索到的javascript中的json编码字符串,并尝试过滤掉斜线和断行无效。在线json观众表明它是一个有效的json字符串。
对我有用的是使用旧式eval("(" + r +")")并且它与json解析函数的工作方式相同,缺点是显然使用它是不安全的,但我没有其他解决方案。
答案 2 :(得分:0)
这对我来说似乎是一个有效的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解析将字符串转换为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]);
}
}
});
答案 3 :(得分:0)
拆分退货数据: 在c#asmx中: string _json =&#34;&#34 ;;
_json = getJsonFunction(_dataSet.Tables [0]); _json + =&#39;`&#39; + getJsonFunction(_dataSet.Tables [1]);
在Jquery中: Data = JSON.parse(res.d.split(&#39;`&#39;)[0]);