簡體   English   中英

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函數接收的字符串,據我所知,它是一個有效的字符串。

[“新的一天”,“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM