web-dev-qa-db-ja.com

Ajax POST intパラメータ)

私はMVCプロジェクトをコアに移行しています。

モデルと文字列のパラメータをコントローラに渡すことができますが、INTは私のために機能していません。

コントローラ内の_[FromBody]string objId_などのStringパラメータとしてJSONオブジェクトにそれらをJSONオブジェクトに折り返すことができますが、JSON _{'objId' : 1}_からint valを解析する必要があります。

私はこれを避けてintを渡すことができる方法はありますか?

以下は私が試みているコードです。

_[HttpPost]
public JsonResult PassIntFromView([FromBody]int objId)
{
    //DO stuff with int here
}
_

これがJSです。

_var data = { "objId": 1};
    $.ajax({
        url: '@Url.Action("PassIntFromView", "ControllerName")',
        data: JSON.stringify(data),
        type: "POST",
        dataType: 'JSON',
        contentType: "application/json",
        success: function(data) {
            //do stuff with json result 
        },
        error: function(passParams) {
            console.log("Error is " + passParams);
        }
    });
_

コントローラ内のobjIdは常に0です。

JSON.stringify(data)も実行せずにこれを試してみました。

私はまた、さまざまな形式の属性のバリエーションをすべて試しました。

8
domshyra

ContentTypeを'application/x-www-form-urlencoded'として使用してみてください。

 var data = { objId: 1 };
 $.ajax({
     url: '@Url.Action("PassIntFromView", "ControllerName")',
     type: "post",
     contentType: 'application/x-www-form-urlencoded',
     data: data,
     success: function (result) {
         console.log(result);
     }
 });

次に、コントローラ内の[FromBody]属性を削除します

[HttpPost]
public JsonResult PassIntFromView(int objId)
{
    //Do stuff with int here
}
5
Xueli Chen

私はあなたの問題があなたがオブジェクトをAPIに渡しているが、それをプリミティブに変換しようとしていることであると思います。私はすでに選択された答えがあることを知っていますが、これを旋回させてください。

var data = { };
data["objId"] = 1; //I just wanted to show you how you can add values to a json object
$.ajax({
    url: '@Url.Action("PassIntFromView", "ControllerName")',
    data: JSON.stringify(data),
    type: "POST",
    dataType: 'JSON',
    contentType: "application/json",
    success: function(data) {
        //do stuff with json result 
    },
    error: function(passParams) {
        console.log("Error is " + passParams);
    }
});
 _

モデルクラスを作成します

public class MyModel {
     public int ObjId {get;set;}
}
 _

あなたのコントローラーはこれらのうちの1つを期待するべきです

[HttpPost]
public JsonResult PassIntFromView([FromBody] MyModel data)
{
    //DO stuff with int here
}
 _
2
DeadlyChambers

JSONは整数ではない文字列が好みます。 json.stringify(データ)を使用してコントローラを解析し、それをコントローラ内の整数に変換してから、次のように返された文字列を解析してください。

var data = { objId: 1};
$.ajax({
    url: '@Url.Action("PassIntFromView", "ControllerName")',//asp.net - url: 'api/controllerName/controllerFunction'
    data: JSON.stringify(data),
    type: "POST",
    dataType: 'JSON',
    contentType: "application/json",
    success: function(data) {
        var result = JSON.parse(data);
        //do stuff with json result 
    },
    error: function(passParams) {
        console.log("Error is " + passParams);
    }
});
 _
1
Mick

これを試して:

var data = { "objId": 1};
$.ajax({
    url: '@Url.Action("PassIntFromView", "ControllerName")',
    data: data,
    type: "POST",
    dataType: 'JSON',
    contentType: "application/json",
    success: function(data) {
        //do stuff with json result 
    },
    error: function(passParams) {
        console.log("Error is " + passParams);
    }
});
 _

あなたのコントローラ:

[HttpPost]
public JsonResult PassIntFromView(int objId)
{
    //DO stuff with int here
}
 _
1
MarioMendieta

Js.

var data = { "objId": 1};

$.ajax({

    url: "ControllerName/PassIntFromView",

    data: data,

    type: "POST",

    dataType: 'JSON',   

    success: function(data.result!=null) {

    console.log(data.result);

    },
    error: function(passParams) {
        console.log("Error is " + passParams);
    }

});
 _
1
Tien Nguyen

私はそれがこのように働きました

let numberFour = JSON.stringify(4);

$.ajax({
    .......
    .......
    data: numberFour,
    type: "POST",
    dataType: 'JSON',
    contentType: "application/json",
    ......
    ........
});

 _
0
BLong