Подтвердить что ты не робот

Передача массива строк в web-метод с переменным числом аргументов с использованием jQuery AJAX

Я пытаюсь передать массив строковых параметров веб-службе С# ASP.NET с помощью jQuery Ajax. Вот мой образец веб-метода. Обратите внимание, что функция принимает переменное количество параметров. Я получаю 500 внутренних ошибок сервера в консоли javascript Chrome, когда я запускаю jquery. Я использую jquery 1.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;
}

Вот 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>

Любая помощь приветствуется!

4b9b3361

Ответ 1

Пересмотренный код на стороне сервера:

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

Кроме того, добавьте это выше вашего объявления класса WebService:

[System.Web.Script.Services.ScriptService]

Пересмотренный код на стороне клиента:

    $(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");
    }

Кроме того, добавьте выше, что script блокирует ссылку на JSON2, например:

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

Примечания:

  • Я тестировал это в .NET 4 и использовал jQuery 1.6.4.
  • Убедитесь, что имена переменных клиента и сервера синхронизированы:
    public string Concat(List<string> arr)
    data: JSON.stringify({ arr: myCars })