2016-12-11 2 views
-2

JSON 개체를 서버로 다시 보내려고합니다. 이것은이 호출되는 컨트롤러의 방법입니다 내 AJAX 호출컨트롤러에서 POST 데이터가 null 인 경우 asp.net mvc 5

function SaveData() { 
var model = [] 
debugger 
$.each($('.Money'), function (i, item) { 
    model.push({ 
     Money: $('.Money').eq(i).val(), 
     Day: $('.Day').eq(i).val(), 
     Note: $('.Note').eq(i).val() 
    }); 
}) 
$.ajax({ 
    url: '@Url.Action("Create")', 
    contentType: "application/json", 
    async: true, 
    data: { partnerDeposit: JSON.stringify(model) }, 
    type: 'POST', 
    dataType: 'json', 
    succsess: function() { 
    } 
})} 

입니다 :

enter image description here

https://i.stack.imgur.com/FqEt9.png

내가 가진 문제는 위에서 항상 JSON 변수가 빈 객체입니다. 성공 함수가 호출되면서 json을 디버깅 할 때 var가 비어있는 것으로 표시됩니다.

내가 뭘 잘못하고 있는지 말해주십시오. 고맙습니다. 이 같은 partnerDepositJSON.stringify 전화를 추가

답변

0

시도 : 나는 다른 곳이 답을 발견하지 않았습니다

$.ajax({ 
    url: '@Url.Action("Create")', 
    contentType: "application/json", 
    async: true, 
    data: JSON.stringify({partnerDeposit: model}), 
    type: 'POST', 
    dataType: 'json', 
    succsess: function() { 
    } 
}) 
+0

나는 시도했다. (그러나 그것은 여전히 ​​null이다. –

+0

모델이 문자열이 아닌 것으로 나타났습니다. 액션 메소드에서 partnerDeposit의 유형을 문자열에서 객체 유형의 목록 (돈, 요일 및 메모 필드가있는 객체)으로 변경해야합니다. –

+0

저는 Json을 문자열로 변환하고 컨트롤러로 전달합니다. 컨트롤러의 partnerDeposit은 null입니다. 나는 이유가 없다 : ( –

0

그래서이 실험을 통해 발견했다. 바라기를 이것은 누군가를 도울 것입니다.

  1. 컨트롤러에서 Request.Form 개체가 수신되는 것을 확인할 수 있으며 Request.Form [0]을 보면 데이터를 찾을 수 있습니다. 양식에 데이터가 있지만 MVC가 null로보고있는 이유는 게시되는 양식 요소의 키가 ""(공백)이기 때문입니다.

  2. 그래서 클라이언트 측에서는 컨텐츠 유형을 올바르게 설정하고 데이터 앞에 "myData ="+ JSON.stringify (myJSONObject)를 추가해야합니다. 여기서 "myData"는 추가 할 키 이름입니다 :

서버 측에

$.ajax({ type: "POST", url: URL, data: "myData="+JSON.stringify(myJSONObject), contentType: "application/x-www-form-urlencoded; charset=utf-8"

, 당신의 [HttpPost] 엔드 포인트는 그래서 같은 당신이 당신의 AJAX에 선언 된 키와 같은 이름으로 입력으로 변수를 가지고 있습니다

` 
[HttpPost] 
[Authorize] 
public ActionResult Index (string myData) // <-- var name matches AJAX 
{ 
    // de-serialize data into server-side object using 
    // JSONConvert.DeserializeObject 
}