2014-03-05 3 views
0

나는 handsontable에서 오는 JSON 문자열을 소비 할 수 있도록 asp.net MVC 5 컨트롤러와 어려움을 겪고 있습니다. 아래 내 스크립트를 참조하십시오. Json 문자열이 성공적으로 생성되었습니다. 화면 및 콘솔에서도 확인할 수 있습니다. 내가 JSON 문자열을 역 직렬화하려고 내가 그리워 무엇인지 모르겠지만 내 handsondata의 PARAM 모든 시간이 비어 있거나 널 (null)이, 내가 해봤 다음과 같은 경우MVC5 컨트롤러에 Handsontable 아약스 게시

 var handsontable = $container.data('handsontable'); 
     $("#btnSave").click(function() { 


      var myData = handsontable.getData() 
      myData = JSON.stringify(myData) 
      $.ajax({ 
       url: "/Home/SaveDataHandsOn", 
       type: "POST", 
       data: "{'jsonString':'" + JSON.stringify(myData) + "'}", 
       dataType: 'json', 
       success: function (data) { 
        alert(data); 
       } 
      }); 
     }); 
    }); 

</script> 

내 문제는 SaveDataHandsOn로 제공 :

public ActionResult SaveDataHandsOn(object handsondata) 
    or 
    public JsonResult SaveDataHandsOn(string handsondata) 
    or 
    public JsonResult SaveDataHandsOn(JsonResult handsondata) 
    { 
     // string p = handsondata.Data.ToString(); 
     var js = new JavaScriptSerializer().Serialize(handsondata); 
     string jsonstr = new JavaScriptSerializer().Serialize(handsondata); 
     return null; 

    } 

올바른 json 형식의 문자열을 사용하여 post 메서드를 성공적으로 실행했지만 많은 성공을 거두었습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

실제 게시물의 모양은 무엇입니까? (Chrome에서 devtools를 체크인하거나 피들러 또는 유사한 도구를 통해 캡처 할 수 있음) 또한 'handsondata'는 어떤 유형의 객체입니까? – FGhilardi

+0

요청 URL : http : // localhost : 43350/Home/SaveDataHandsOn 요청 헤더주의 : 임시 헤더가 표시됩니다. 수락 : application/json, text/javascript, */*; q = 0.01 콘텐츠 유형 : application/x-www-form-urlencoded; 사용자 에이전트 : Mozilla/5.0 (Windows NT 6.1, WOW64) AppleWebKit/537.36 (Gecko와 같은 KHTML) - charset = UTF-8 출처 : http : // localhost : 43350 Referer : http : // localhost : 43350/ Chrome/33.0.1750.146 Safari/537.36 X-Requested : XMLHttpRequest 형식 Dataview 소스보기 URL 인코딩 { 'jsonString': ''[{\ "col1 \": \ "4 \", \ "col2 \": \ "4 \"}, {\ "col1 \": null, \ "col2 \": null}] " '} : – Lazul

답변

0

당신은 JSON.stringify를 두 번 호출하고 있습니다 ... 또한이 경우 객체를 다시 Object로 변환하기 때문에 [Object object]와 같은 경고가 나타납니다. dataType : "json"을 $ .ajax에 전달하면 문자열을 객체에 넣을 수도 있습니다.

+0

답변을 주셔서 감사합니다. 스크립트를 수정했지만 컨트롤러 부분에는 변경이 없습니다 ... 나는 여기도 모티프를 만들었다. – Lazul

+0

감사! 문제는 누락 된 contenttype : 스크립트의 아약스 부분에서 라인! 추가 한 후 매력처럼 작동합니다! 다시 한번 감사드립니다! – Lazul

0

실제 POST 데이터에 대한 주석에 무엇을 입력했는지에 따라 컨트롤러가 jsonString이라는 객체를 게시하면 handsondata이라는 객체 대신 jsonString이라는 객체를 허용해야합니다.

+0

감사! 문제는 누락 된 contenttype : 스크립트의 아약스 부분에서 라인! 추가 한 후 매력처럼 작동합니다! 다시 한번 감사드립니다! – Lazul