【发布时间】:2015-11-20 13:40:18
【问题描述】:
我在传递两个字符串数组作为 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']}", 时,它起作用了。
所以,stringify() 不是这里的最佳选择,还有其他方法可以帮助我快速完成吗?
【问题讨论】:
-
您能分享您的 Json 对象以查看您要发布的 Json 结构吗?
-
我到底应该分享什么?我写过,它是“dataToSend”。我怎样才能得到它的详细信息?
-
我指的是
dataS值。 -
@Oluwafemi 我刚刚更新了帖子,请看一下。
标签: javascript c# jquery json post