8

ASP.NET-MVC を使用しています。ajax で配列を投稿しようとしましたが、コントローラーで配列を取得する方法がわかりません。これが私のコードです:

アヤックス

var lines = new Array();
lines.push("ABC");
lines.push("DEF");
lines.push("GHI");
$.ajax(
{
    url: 'MyController/MyAction/',
    type: 'POST',
    data: { 'lines': lines },
    dataType: 'json',
    async: false,
    success: function (data) {
        console.log(data);
    }
});

マイコントローラー

public JsonResult MyAction(string[] lines)
{
    Console.WriteLine(lines); // Display nothing
    return Json(new { data = 0 });
}

ラインが表示されないのはなぜですか? この配列を適切に投稿して MyAction で使用するにはどうすればよいですか?

4

2 に答える 2

16

contentType: "application/json"オプションとJSON.stringifyパラメーターを設定します。

var lines = new Array();
lines.push("ABC");
lines.push("DEF");
lines.push("GHI");
$.ajax(
{
    url: 'MyController/MyAction/',
    type: 'POST',
    data: JSON.stringify({ 'lines': lines }),
    dataType: 'json',
    contentType: 'application/json',
    async: false,
    success: function (data) {
        console.log(data);
    }
});

ビジネスケースで意味がある場合は、取得するオブジェクトのタイプを設定することもできます。例:

public JsonResult MyAction(string[] lines)
{
    Console.WriteLine(lines); // Display nothing
    return Json(new { data = 0 });
}

そして、あなたが送っているものでより実用的なもの:

public class MyModel {
    string[] lines;
}

そして最後に:

public JsonResult MyAction(MyModel request)
{
    Console.WriteLine(string.Join(", ", request.lines)); // Display nothing
    return Json(new { data = 0 });
}
于 2013-11-04T13:19:28.247 に答える
-1

まず、次のように変更してみてください。

data: { 'lines': lines }

data: { lines: lines },

解決しない場合は、json.stringify(lines) を使用してみてください

于 2013-11-04T13:23:06.847 に答える