0

2 つの整数を含む配列を Web サービスの関数に渡そうとします。

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public bool sample(int number, int[] numbers)
{
    return (numbers.Sum() > number);
}

私はjquery.ajaxでそれを行います:

var arr = ['20', '89'];

$.ajax({ url: "Registration.asmx/sample",
    data: jQuery.param({ 'number': '300', 'numbers[]': arr }),
    type: "POST",
    success: function (data) {
        $('#result').html(data.toString());
    },
    error: function (xhr, ajaxOptions, thrownError) {
        $('#result').html(jQuery.param({ 'number': '300', 'numbers': arr }) + "<br/><br/>" +
                      thrownError + "<br/><br/>" +
                      xhr.responseText);
    }
});

しかし、空の配列に関するサーバー内部エラーが常に発生します(と思います)なし

4

2 に答える 2

0

変更してみてください:

data: jQuery.param({ 'number': '300', 'numbers[]': arr }),

に:

data: jQuery.param({ 'number': '300', 'numbers': arr }),

編集:

メソッドがGETリクエストを受け入れると述べています:

[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

しかし、JavaScript では POST を使用しています。

type: "POST",

次のように変更します。

type: "GET",
于 2012-07-10T11:10:52.727 に答える
0

ここで、どうにかして次の URL を作成する必要があることがわかりました: Registration.asmx/sample?number=30&numbers=55&numbers=88 (numbers:30, numbers[55,88])

私はそれを行う方法を 1 つだけ知っています: 文字列を作成する:/ この問題を処理できる js/jquery メソッドを知っていますか? (jquery.param は、Registration.asmx/sample?number=30&numbers[]=55&numbers[]=88 のような URL を作成しますが、これは受け入れられません..)

于 2012-07-10T15:35:52.560 に答える