[英]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函數接收的字符串,據我所知,它是一個有效的字符串。
[“新的一天”,“2”,“一首歌”,“約翰”,“2014-12-08 13:04:56”,“1843”,“22”]
[“新的一天”,“2”,“一首歌”,“約翰”,“2014-12-08 13:04:56”,“1843”,“22”] - 是無效的JSON, http:// www .w3schools.com / json / json_syntax.asp 。 將數組包裝到數組對象中)
不知何故,$ .parseJSON和$ .parseJSON函數在IIS 7上使用php不起作用,但它們可以在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解析將字符串轉換為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]);
}
}
});
拆分返回數據:在c#asmx中:string _json =“”;
_json = getJsonFunction(_dataSet.Tables [0]); _json + ='`'+ getJsonFunction(_dataSet.Tables [1]);
在Jquery中:Data = JSON.parse(res.d.split('`')[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.