복붙노트

[JQUERY] POST (AJAX) JSON 통해 데이터를 전송 및 JSON 제어기로부터 응답을 수신 (MVC)

JQUERY

POST (AJAX) JSON 통해 데이터를 전송 및 JSON 제어기로부터 응답을 수신 (MVC)

해결법


  1. 1.

    public class Person
    {
        public string Name { get; set; }
        public string Address { get; set; }
        public string Phone { get; set; }
    }
    
        public ActionResult PersonTest()
        {
            return View();
        }
    
        [HttpPost]
        public ActionResult PersonSubmit(Vh.Web.Models.Person person)
        {
            System.Threading.Thread.Sleep(2000);  /*simulating slow connection*/
    
            /*Do something with object person*/
    
    
            return Json(new {msg="Successfully added "+person.Name });
        }
    
    <script type="text/javascript">
        function send() {
            var person = {
                name: $("#id-name").val(),
                address:$("#id-address").val(),
                phone:$("#id-phone").val()
            }
    
            $('#target').html('sending..');
    
            $.ajax({
                url: '/test/PersonSubmit',
                type: 'post',
                dataType: 'json',
                contentType: 'application/json',
                success: function (data) {
                    $('#target').html(data.msg);
                },
                data: JSON.stringify(person)
            });
        }
    </script>
    

  2. 2.

    var SendInfo= { SendInfo: [... your elements ...]};
    
            $.ajax({
                type: 'post',
                url: 'Your-URI',
                data: JSON.stringify(SendInfo),
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: function (data) {
                    ...
                }
            });
    

    및 행동

    public ActionResult AddDomain(IEnumerable<PersonSheets> SendInfo){
    ...
    

    이 같은 배열을 바인딩 할 수 있습니다

    var SendInfo = [];
    
    $(this).parents('table').find('input:checked').each(function () {
        var domain = {
            name: $("#id-manuf-name").val(),
            address: $("#id-manuf-address").val(),
            phone: $("#id-manuf-phone").val(),
        }
    
        SendInfo.push(domain);
    });
    

    이 당신을 도울 수 있기를 바랍니다.


  3. 3.사용 JSON.stringify (<데이터>).

    사용 JSON.stringify (<데이터>).

    데이터 : 코드를 변경 sendInfo를 데이터 : JSON.stringify (sendInfo). 이 당신을 도울 수 있기를 바랍니다.


  4. 4.JSON을 게시하려면, 당신은 그것을 캐릭터 라인 화해야합니다. JSON.stringify와 false로 processData 옵션을 설정합니다.

    JSON을 게시하려면, 당신은 그것을 캐릭터 라인 화해야합니다. JSON.stringify와 false로 processData 옵션을 설정합니다.

    $.ajax({
        url: url,
        type: "POST",
        data: JSON.stringify(data),
        processData: false,
        contentType: "application/json; charset=UTF-8",
        complete: callback
    });
    

  5. 5.modelbinding 실패 귀하의 PersonSheets는, ID, ID가 포스트에없는 속성 INT 있습니다. (? INT) 아이디 널 (NULL)를 확인하거나 게시물 아이디 = 0이어야 보냅니다.

    modelbinding 실패 귀하의 PersonSheets는, ID, ID가 포스트에없는 속성 INT 있습니다. (? INT) 아이디 널 (NULL)를 확인하거나 게시물 아이디 = 0이어야 보냅니다.


  6. 6.당신은 $ .toJSON를 호출하고 전통적인 = true를 추가 할 필요가 없습니다

    당신은 $ .toJSON를 호출하고 전통적인 = true를 추가 할 필요가 없습니다

    data: { sendInfo: array },
    traditional: true
    

    할것이다.

  7. from https://stackoverflow.com/questions/8517071/send-json-data-via-post-ajax-and-receive-json-response-from-controller-mvc by cc-by-sa and MIT license