2017-06-05 81 views
0

首先,我想在發佈之前感謝堆棧溢出。這是場景。我想在JavaScript中發佈數組[[「a」,「b」],[「c」,「d」]]。並將數據返回爲[[「a」,「b」],[「c」,「d」]]。但我得到了這些價值 - 「[[\」a \「,\」b \「],[\」c \「,\」d \「]]」在Javascript中發佈數組

在此先感謝。

var arraylist = [[「a」,「b」],[「c」,「d」]];

$.ajax({ 
async: true, 
type: "POST", 
url: "/TestReciever.cshtml", 
data: JSON.stringify(arraylist), 
success: function (data) { 
    alert(data); 
    }    
}); 

我TestReciever.cshtml代碼:

string input; 
using (var reader = new StreamReader(Request.InputStream)){ 
input = reader.ReadToEnd(); 
} 
var j = Json.Encode(input); 
Response.Write(j); 
+0

這是因爲你已經編碼了字符串輸入'Json.Encode(input)' –

回答

1

在你的代碼

string input; 
using (var reader = new StreamReader(Request.InputStream)){ 
input = reader.ReadToEnd(); 
} 
// Your are encoding the JSON data to STRING 
    var j = Json.Encode(input); // Its like doing JSON.stringify in JS 
    Response.Write(j); 

此行var j = Json.Encode(input);是你的JSON轉換爲字符串。它在代碼中的作用是,由於您的JSON在其結構中包含雙引號。所以,它基本上逃脫了他們。如從[["a","b"],["c","d"]]"[[\"a\",\"b\"],[\"c\",\"d\"]]";

在javascript中,您需要執行JSON.parse(YOUR_RESPONSE)以將數據讀取爲數組。

$.ajax({ 
async: true, 
type: "POST", 
url: "/TestReciever.cshtml", 
data: JSON.stringify(arraylist), 
success: function (data) { 
     var your_array = JSON.parse(data); //This will parse your string to ARRAY 
     /* NOW USE YOUR ARRAY HERE AS A NORMAL ARRAY*/ 
    }    
}); 

有關詳細信息上JSON.parse

的JSON.parse()來解析方法JSON字符串,構建由字符串描述的 JavaScript值或對象。可以提供可選的 reviver函數,以便在返回結果對象之前對其進行變換。

如果你感到困惑,如果陣列可以在這裏一個JSON是一個偉大的answer.

1

它看起來像你的問題是在CS-代碼,而不是JavaScript的。該行var j = Json.Encode(input);將對來自站點的已經json編碼的字符串進行json編碼。如果你只是返回你的輸入,你應該得到正確的json。

+0

@ jonasfh,@Nadir Laskar,謝謝我已經理解了。感謝您的解釋和時間。我現在再試一次。它幫助我很多。 –