web-dev-qa-db-ja.com

jQueryajax呼び出しでパラメーターをASP.NETWebメソッドに渡す

私はこれについてもっと多くのスレッドがあることを知っていますが、それらは私を助けません、そして私はここで狂気になります!

JQueryAjaxを使用していくつかのパラメーターをWebメソッドに渡したいです。

var paramList = '';
for(i = 0; i < IDList.length; i++){
    if (paramList.length > 0) paramList += ',';  
        paramList += '"' + 'id' + '":"' + IDList[i].value + '"';  
    }
    paramList = '{' + paramList + '}';  
    var jsonParams = JSON.stringify(paramList);


    $.ajax({
        type: "POST",          
        url: "editactivity.aspx/UpdateSequenceNumber",          
        data: jsonParams,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {

        }
    });

Ajax呼び出しで、データをparamListに配置すると、「無効なWebサービス呼び出し、パラメーターの値がありません:\ u0027a\u0027」というエラーが表示されます。

JsonParamsにデータを入力すると、次のエラーが発生します。

タイプ\ u0027System.String\u0027のオブジェクトをタイプ\ u0027System.Collections.Generic.IDictionary`2 [System.String、System.Object]\u0027に変換できません。 "

paramListを書き出すと、{"id":"140", "id":"138"}のような正しいJSON形式になります。

jsonParamsを書き出すと、"{\"id\":\"140\",\"id\":\"138\"}"のような間違った形式になります。

Webメソッド:(まだそれほど多くはありません..)

[System.Web.Services.WebMethod]
    public static string UpdateSequenceNumber(string a, string b)
    {
         return a+b;
    }

私は何が間違っているのですか?このJSONを正しく理解できないようです。

更新:

最初の回答からの助けの後、私はAJAXリクエストで{"id":["138","140"]}を送信します。

Webメソッドは、代わりにidという文字列をパラメーターとして受け取るようになりました。

[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string id)
{
     return id;
}

今、私は新しいエラーを受け取ります:

「タイプ\ u0027System.Array\u0027は、アレイの逆シリアル化ではサポートされていません。」

10
larschanders

Jsonパラメーター名はc#パラメーター名と同じである必要があります。

{"a":"140", "b":"138"}

不明な数のパラメーターをサーバーに送信する場合は、クライアント側で1つのパラメーターに連結してから、サーバー側で分割することができます。

15
Ahmet Kakıcı