[英]javascript, array of string as JSON
我在傳遞兩個字符串數組作為 JSON 格式的參數以通過 jQuery 的“POST”調用 ASMX Web 服務方法時遇到問題。
我的網絡方法是:
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public List<string> CreateCollection(string[] names, string[] lastnames)
{
this.collection = new List<string>();
for (int i = 0; i < names.Length; i++)
{
this.collection.Add(names[i] + " " + lastnames[i]);
}
return this.collection;
}
現在,js:
function CreateArray() {
var dataS = GetJSONData(); //data in JSON format (I believe)
$.ajax({
type: "POST",
url: "http://localhost:45250/ServiceJava.asmx/CreateCollection",
data: dataS,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//something
}
})
}
GetJSONData()
是我的輔助方法,它從表中的列創建兩個數組。 這是代碼:
function GetJSONData() {
//take names
var firstnames = $('#data_table td:nth-child(1)').map(function () {
return $(this).text();
}).get(); //["One","Two","Three"]
//take surnames
var surnames = $('#data_table td:nth-child(2)').map(function () {
return $(this).text();
}).get(); //["Surname1","Surname2","Surname3"]
//create JSON data
var dataToSend = {
names: JSON.stringify(firstnames),
lastnames: JSON.stringify(surnames)
};
return dataToSend;
}
現在,當我嘗試通過單擊調用CreateArray()
按鈕來執行代碼時,出現錯誤:
ExceptionType:“System.ArgumentException” 消息:“第一個 JSON 元素不正確:名稱。”
我不知道,為什么不正確? 我已經准備了很多關於它的帖子,但我不知道為什么它不起作用,那個dataS
什么問題?
編輯:這是來自調試器的dataToSend
var dataToSend = {
names: firstnames,
lastnames: surnames,
};
因為有人建議我這樣做。
EDIT2: @Vijay Dev 提到的那些""
和''
有一些東西,因為當我嘗試將data
作為data: "{names:['Jan','Arek'],lastnames:['Karol','Basia']}",
傳遞時data: "{names:['Jan','Arek'],lastnames:['Karol','Basia']}",
它起作用了。
所以, stringify()
不是這里的最佳選擇,還有其他方法可以幫助我快速完成嗎?
我認為由於您已經為dataToSend
屬性設置了JSON.stringifying
值,jQuery 可能會嘗試將其作為序列化數據發送。 嘗試從這里刪除JSON.stringify
:
//create JSON data
var dataToSend = {
names : firstnames,
lastnames : surnames
};
當設置為dataType: "json"
時,jQuery 將對數據進行字符串化。
祝你好運,玩得開心!
嘗試像這樣發送:
function CreateArray() {
var dataS = GetJSONData(); //data in JSON format (I believe)
$.ajax({
type: "POST",
url: "http://localhost:45250/ServiceJava.asmx/CreateCollection",
data: {names: dataS.firstnames,lastnames: dataS.surnames} ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//something
}
})
}
這應該工作..
盡管如此,沒有一個答案是正確的,它讓我找到了正確的方法來做到這一點。 為了使其正常工作,我進行了以下更改:
//create JSON data
var dataToSend = JSON.stringify({ "names": firstnames, "lastnames": surnames });
所以這是@Oluwafemi 提出的想法,但他建議創建Users
類。 不幸的是,在那之后,該應用程序將無法以呈現的方式工作。 所以我想如果我想傳遞一個自定義對象,我需要以不同的方式傳遞它。
編輯:我還沒有嘗試過,但我認為如果我想傳遞@Oluwafemi 建議的這樣的自定義對象,我需要在腳本中編寫:
var user1 = {
name: "One",
lastname:"OneOne"
}
然后將數據傳遞為:
data = JSON.stringify({ user: user1 });
對於自定義對象數組,以此類推:
data = JSON.stringify({ user: [user1, user2] });
稍后有機會時,我會檢查一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.