如何通过 JSON 将数组传递给 asmx Web 服务?



我想将数组值传递给我的 Web 服务文件。但它抛出以下错误

设置删除文件

测试

测试窗体仅适用于以基元类型作为参数的方法。

这是我的jquery代码

$('#btnDeleteFiles').click(function () {
var filesPaths = [];
i = 0;
$("input:checkbox[name=filed-checkedbox]:checked").each(function () {
filesPaths[i] = $(this).val();
i++;
});
//alert("filesPaths  =  " + filesPaths)
var location = $('#ddlLocation option:selected').text();
alert("Location = "+location)
$.ajax({
method: 'post',
url: "GetAllFolderDetails.asmx/setDeleteFiles",
data: {
location: location,
fileNames: filesPaths
},
dataType: "json",
success: function (data) {
window.location.reload(true);
//alert("Success");
},
error: function (result) {
alert("Error");
}
});
});

GetAllFolderDetails.asmxcode

[WebMethod]
public void setDeleteFiles(string location, string[] fileNames)
{
var locationID = 0;
var domain = "domain";
var username = "xxx";   //username
var Password = "***";    //password
Debug.WriteLine("Location = "+location);
Debug.WriteLine("fileNames = " + fileNames);
using (new ImpersonateUser(username , domain, Password))
{
Debug.WriteLine("Files names = "+ fileNames);
foreach (string file in fileNames)
{
FileInfo files = new FileInfo(file);
files.Delete();
}
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize("Files are successfully Deleted"));
}
}

注意

如果我将string作为没有数组的参数传递,它工作正常

使用以下

data: JSON.stringify({ location: location, fileNames: filesPaths }),
contentType: "application/json; charset=utf-8",
dataType: "json",

并将输入参数数据类型更改为List<string>而不是string[]

只需删除

dataType: "json",

从你的阿贾克斯调用。 并签入您的 asmx 文件,该文件的装饰

[System.Web.Script.Services.ScriptService]

试试这个。

相关内容

  • 没有找到相关文章

最新更新