我想使用ajax和webservice将数据从javascript插入数据库,
我有一些JQuery的控件,我得到它们的值并制作一个值的数组
。当我发送数组时,它会导致此错误
Cannot convert object of type 'System.String' to type'System.Collections.Generic.List1[System.String]'
这是Javascript
var variables = Array();
var i=0;
$('#Div_AdSubmition').find('.selectBox').each(function () {
variables[i] = $(this).find('.selected').find(".text").html();
i++;
});
$.ajax({
type: 'post',
data: "{ 'a':'" +variables + "'}",
dataType: 'json',
url: 'HomeWebService.asmx/insertAd',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("data : " + data.d);
}
});
这是c#代码
[WebMethod]
public object insertAd(List<string> a)
{
return a;
}
答案 0 :(得分:1)
您需要像data
这样的$.ajax
调用JSON.stringify({'a': variables})
参数:JSON
&lt; JSON
变量不适用于&lt; IE8所以你想要包含一个}
实现,就像答案中提到的那样here
此外,您在success
函数中还有一个var someArr = ['el1', 'el2'];
JSON.stringify({
'param1': 1,
'param2': 'two'
'param3': someArr
// etc
});
。
因此,将来,如果您想为传递给Web服务的数据对象添加额外的参数,您可以像这样构建它:
var variables = Array();
var i = 0;
$('#Div_AdSubmition').find('.selectBox').each(function () {
variables[i] = $(this).find('.selected').find(".text").html();
i++;
});
$.ajax({
type: 'post',
data: JSON.stringify({'a': variables}),
dataType: 'json',
url: 'HomeWebService.asmx/insertAd',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("data : " + data.d);
});
});
JavaScript的:
[WebMethod]
public object insertAd(List<string> a)
{
return a;
}
C#
{{1}}
答案 1 :(得分:1)
data:要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值。
因此,尝试在ajax调用中添加一个新参数:
$.ajax({
type: 'post',
data: { 'a': variables }, // Notice some changes here
dataType: 'json',
traditional: true, // Your new parameter
url: 'HomeWebService.asmx/insertAd',
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("data : " + data.d);
}
});
试试这种方式。也许您需要更改Web服务方法以期望array
而不是List
,但我不确定。
答案 2 :(得分:1)
试试这个
data: JSON.stringify({ 'a': variables }),