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

Javascript Ajax调用将字符串传递给webservice并返回字符串[],javascript,c#,jquery,ajax,web-services,Javascript,C#,Jquery,Ajax,Web Services,我不熟悉Ajax和webservice,并尝试在Javascript代码中进行Ajax调用,将字符串传递给我的webservice方法(C#)。 之后,webservice方法必须返回一个字符串数组,我希望在Ajax成功方法中循环使用该数组。 有人知道如何认识到这一点吗 我的无效尝试: $.ajax({ type: "POST", url: "MyWebService.asmx/getMembers", data: groupname, contentType:

我不熟悉Ajax和webservice,并尝试在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]));
        }
    }
});
webservice方法是有效的。我已经测试了它,将结果写入CSV文件。因此,问题一定是参数或返回值。

警告:无法测试

服务器端

在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); 
}
如果您有以下情况,请通过调用您的Web服务进行检查:

{“有效负载”:[“string1”、“string2”、“string3”]}

客户端

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

...
success: function(data) {
    alert("Success");
    for (var i = 0; i < data.payload.length; i++) {
        alert(data.payload[i]);
    }
}
。。。
成功:功能(数据){
警惕(“成功”);
对于(var i=0;i
您可以执行
console.log(数据)
并显示结果1什么“不起作用”吗?请更具体地说,2-查看任何需要的服务器代码。您是否验证了您的url实际上返回了什么?发布服务器返回的任何内容的日志Ajax调用的error方法返回parserror。它永远达不到成功的方法,那是不起作用的。我认为这是因为它返回字符串[],Ajax调用需要一些json。我应该为webservice方法的参数选择哪个数据类型,为返回值选择哪个数据类型?webservice的参数保持
String
,您可以使用本教程的json部分返回上述json:(TL:DR add
[ScriptMethod](ResponseFormat=ResponseFormat.Json)
下的
[WebMethod]
并返回一个对象)。编辑我的答案Ajax cool中的数据参数与示例中的数据参数类似吗?
...
success: function(data) {
    alert("Success");
    for (var i = 0; i < data.payload.length; i++) {
        alert(data.payload[i]);
    }
}