0

JSON コールバックにいくつかの引数を渡そうとしていますが、string[] 引数は null のままです。これを機能させるには、javascript から文字列配列を渡すにはどうすればよいですか?

JavaScript 関数:

function jsonCallback(jsonCallbackID, argumentsArray) {
var argumentValues = [];
for (var i = 0; i < argumentsArray.length; i++) {
    argumentValues.push('' + $("#" + argumentsArray[i]).val());
}

// build request
var url = encodeURI("/DataEntry/JsonCallback/");
var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: argumentValues, rndvalue: Math.floor(Math.random() * 10000000001) });

// fire request
$.getJSON(url, data, function (data) {});

実際のコールバック C# 関数:

        public JsonResult JsonCallback(int jsonCallbackID, string[] jsonCallbackValues)
    { }

この関数は呼び出されますが、引数 'jsonCallbackValues' は null です。

編集

これを機能させるために、次のことを行いました。

var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: argumentValues.toString(), rndvalue: Math.floor(Math.random() * 10000000001) });

そして、jsonCallbackValues 文字列を "," で分割して、結果の配列を取得します。

4

3 に答える 3

3

JSON APIを試すことができます...

var data = {
   jsonCallbackID:jsonCallbackID,
   jsonCallbackValues: JSON.stringify(argumentValues),
   rndvalue: Math.floor(Math.random() * 10000000001)
};
// your 
$.getJSON(url, data, function (data) {});
于 2012-09-21T08:28:01.863 に答える
2

JSON はシリアル化された言語であるため、内部にオブジェクトを配置することはできません。

配列を JSON 形式で作成する必要があります。

jsonCallbackValues : [「値 1」、「値 2」...]

于 2012-09-21T08:23:38.773 に答える
2

このようにしてみてください

var data = ({ jsonCallbackID: jsonCallbackID, jsonCallbackValues: $.toJSON(argumentValues), rndvalue: Math.floor(Math.random() * 10000000001) });

http://code.google.com/p/jquery-json/の JSON jQuery プラグインを使用しました

コントローラー メソッドで、文字列 jsonCallbackValuesArray に変更します。

次に、JavaScriptSerializer または JSON.Net を使用して、JSON 文字列を文字列 [] に変換します。

于 2012-09-21T08:36:50.767 に答える