Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用jQuery AJAX将字符串数组传递给参数数目可变的webmethod_C#_Jquery_Asp.net_Arrays_Ajax - Fatal编程技术网

C# 使用jQuery AJAX将字符串数组传递给参数数目可变的webmethod

C# 使用jQuery AJAX将字符串数组传递给参数数目可变的webmethod,c#,jquery,asp.net,arrays,ajax,C#,Jquery,Asp.net,Arrays,Ajax,我试图使用jQuery Ajax将字符串参数数组传递给C#ASP.NET web服务。这是我的示例web方法。请注意,该函数接受数量可变的参数。当我运行jquery时,Chrome的javascript控制台中出现500个内部服务器错误。我正在使用jquery1.6.2和.NET3.5 [WebMethod] public string Concat(params string[] arr) { string result = ""; for (int i = 0; i <

我试图使用jQuery Ajax将字符串参数数组传递给C#ASP.NET web服务。这是我的示例web方法。请注意,该函数接受数量可变的参数。当我运行jquery时,Chrome的javascript控制台中出现500个内部服务器错误。我正在使用jquery1.6.2和.NET3.5

[WebMethod]
public string Concat(params string[] arr)
{
    string result = "";
    for (int i = 0; i < arr.Length; i++)
    {
        result += arr[i];
    }
    return result;
}
[WebMethod]
公共字符串Concat(参数字符串[]arr)
{
字符串结果=”;
对于(int i=0;i
以下是jquery:

$(document).ready(function() {

    var myCars=new Array(); 
    myCars[0]="Saab";      
    myCars[1]="Volvo";
    myCars[2]="BMW";

    $.ajax({
        type: "POST",
        url: "WebService.asmx/Concat",
        data: {arr: myCars},        //can't figure out what to put here     
        success: onSuccess,
        Error: onError
    });
});

function onSuccess()
{
    alert("testing");
}

function onError() 
{
    alert("fail");
}

</script>
$(文档).ready(函数(){
var myCars=新数组();
myCars[0]=“萨博”;
myCars[1]=“沃尔沃”;
myCars[2]=“宝马”;
$.ajax({
类型:“POST”,
url:“WebService.asmx/Concat”,
数据:{arr:myCars},//不知道在这里放什么
成功:一旦成功,
错误:onError
});
});
函数onSuccess()
{
警报(“测试”);
}
函数onError()
{
警报(“失败”);
}

感谢您的帮助

修改后的服务器端代码:

[WebMethod]
public string Concat(List<string> arr)
{
    string result = "";
    for (int i = 0; i < arr.Count; i++)
    {
        result += arr[i];
    }
    return result;
}
    $(document).ready(function () {

        var myCars = new Array();
        myCars[0] = "Saab";
        myCars[1] = "Volvo";
        myCars[2] = "BMW";

        $.ajax({
            type: "POST",
            url: "WebService.asmx/Concat",
            data: JSON.stringify({ arr: myCars }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            failure: onError
        });
    });

    function onSuccess(response) {
        alert(response.d);
    }

    function onError() {
        alert("fail");
    }
修改的客户端代码:

[WebMethod]
public string Concat(List<string> arr)
{
    string result = "";
    for (int i = 0; i < arr.Count; i++)
    {
        result += arr[i];
    }
    return result;
}
    $(document).ready(function () {

        var myCars = new Array();
        myCars[0] = "Saab";
        myCars[1] = "Volvo";
        myCars[2] = "BMW";

        $.ajax({
            type: "POST",
            url: "WebService.asmx/Concat",
            data: JSON.stringify({ arr: myCars }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            failure: onError
        });
    });

    function onSuccess(response) {
        alert(response.d);
    }

    function onError() {
        alert("fail");
    }
此外,在该脚本块上方添加对JSON2的引用,例如:

<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>

注:

  • 我已经在.NET4下使用jQuery1.6.4对其进行了测试

  • 确保客户端和服务器变量名保持同步:
    公共字符串Concat(Listarr

    数据:JSON.stringify({arr:myCars})
也许您可以先删除阵列,然后在服务中将其取消序列化。我现在正尝试将其扩展到jqGrid,但它不起作用,有什么想法吗?我在这里提出了另一个问题:我必须使我的服务器端方法成为静态的,以使其工作。示例:公共静态字符串Concat(列表arr)