Ajax调用将字符串传递给webservice并将String []返回

时间:2016-02-17 14:53:58

标签: javascript c# jquery ajax web-services

我是Ajax和webservices的新手,并尝试在我的Javascript代码中进行Ajax调用,该代码将字符串传递给我的webservice方法(C#)。 之后webservice方法必须返回一个字符串数组,我想在我的Ajax成功方法中循环。 有谁知道如何实现这一点?

我的工作没有尝试:

$.ajax({
    type: "POST",
    url: "MyWebService.asmx/getMembers",
    data: groupname,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
        alert("Success");
        for (var i = 0; i < data.length; i++) {
            alert(JSON.parse(data[i]));
        }
    }
});

&#34;组名&#34;是一个字符串变量和&#34;数据&#34;应该是一个数组。 有什么建议吗?

我应该使用&#34; text&#34;对于contentType,是否有dataType:&#34; String []&#34;?

网络服务代码:

    [WebMethod]
    public String[] getMembers(String groupname)
    {
        ...
        return userArray;
    }

webservice方法有效。我测试过它将结果写入CSV文件。所以问题必须是参数或返回值。

1 个答案:

答案 0 :(得分:0)

警告:无法测试。

服务器端

在Web服务中设置JSON内容类型响应头并填充JSON对象:

private class Payload
{
    public String[] payload;
}    
...
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getMembers(String groupname)
{
    ...
    Payload p = new Payload();
    // populate
    return new JavaScriptSerializer().Serialize(p); 
}

如果你有这样的话,请致电你的网络服务:

{"payload":["string1","string2","string3"]}

客户端

将JSON contentType保留在AJAX调用中,然后在javascript中解析它:

...
success: function(data) {
    alert("Success");
    for (var i = 0; i < data.payload.length; i++) {
        alert(data.payload[i]);
    }
}