복붙노트

[JQUERY] 적절한 방법은 강력한 형식의 MVC 3보기에서 패스 모델에 JQuery와에 AJAX 포스트를 사용하는

JQUERY

적절한 방법은 강력한 형식의 MVC 3보기에서 패스 모델에 JQuery와에 AJAX 포스트를 사용하는

해결법


  1. 1.당신은 var에 선언과 캐릭터 라인 화를 건너 뛸 수 있습니다. 그렇지 않으면, 그것은 잘 작동합니다.

    당신은 var에 선언과 캐릭터 라인 화를 건너 뛸 수 있습니다. 그렇지 않으면, 그것은 잘 작동합니다.

    $.ajax({
        url: '/home/check',
        type: 'POST',
        data: {
            Address1: "423 Judy Road",
            Address2: "1001",
            City: "New York",
            State: "NY",
            ZipCode: "10301",
            Country: "USA"
        },
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            alert(data.success);
        },
        error: function () {
            alert("error");
        }
    });
    

  2. 2.나는 이것을 구현하는 3 가지 방법을 발견 :

    나는 이것을 구현하는 3 가지 방법을 발견 :

    C # 클래스 :

    public class AddressInfo {
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string ZipCode { get; set; }
        public string Country { get; set; }
    }
    

    동작:

    [HttpPost]
    public ActionResult Check(AddressInfo addressInfo)
    {
        return Json(new { success = true });
    }
    

    자바 스크립트는 당신은 세 가지 방법으로 할 수 있습니다 :

    1) 쿼리 문자열 :

    $.ajax({
        url: '/en/Home/Check',
        data: $('#form').serialize(),
        type: 'POST',
    });
    

    데이터는 여기에 문자열입니다.

    "주소 1 = 어쩌구 및 주소 2 = ㅋ & 시티 = 어쩌구 및 주 = 어쩌구 및 우편 번호 = ㅋ & 컨트리 = ㅋ"

    2) 객체 배열 :

    $.ajax({
        url: '/en/Home/Check',
        data: $('#form').serializeArray(),
        type: 'POST',
    });
    

    데이터는 현재 키 / 값 쌍의 어레이이다 :

    =[{name: 'Address1', value: 'blah'}, {name: 'Address2', value: 'blah'}, {name: 'City', value: 'blah'}, {name: 'State', value: 'blah'}, {name: 'ZipCode', value: 'blah'}, {name: 'Country', value: 'blah'}]
    

    3) JSON :

    $.ajax({
          url: '/en/Home/Check',
          data: JSON.stringify({ addressInfo:{//missing brackets
              Address1: $('#address1').val(),
              Address2: $('#address2').val(),
              City: $('#City').val(),
              State: $('#State').val(),
              ZipCode: $('#ZipCode').val()}}),
          type: 'POST',
          contentType: 'application/json; charset=utf-8'
    });
    

    데이터는 여기에 연재 JSON 문자열입니다. 이름이 서버에서 매개 변수의 이름과 일치해야합니다!

    ='{"addressInfo":{"Address1":"blah","Address2":"blah","City":"blah","State":"blah", "ZipCode", "blah", "Country", "blah"}}'
    

  3. 3.이것은 나를 위해 일한 방법입니다 :

    이것은 나를 위해 일한 방법입니다 :

    $.post("/Controller/Action", $("#form").serialize(), function(json) {       
            // handle response
    }, "json");
    
    [HttpPost]
    public ActionResult TV(MyModel id)
    {
        return Json(new { success = true });
    }
    

  4. 4.당신이해야하는 것은 괜찮습니다 - 그러나 일부 입력을 저장하려면, 당신은 단순히 데이터에 사용할 수있는

    당신이해야하는 것은 괜찮습니다 - 그러나 일부 입력을 저장하려면, 당신은 단순히 데이터에 사용할 수있는

    
    data: $('#formId').serialize()
    
    

    자세한 내용은 http://www.ryancoughlin.com/2009/05/04/how-to-use-jquery-to-serialize-ajax-forms/를 참조 구문은 아주 기본적인 것입니다.


  5. 5.사용하는 경우 MVC (5)는이 솔루션을 읽을!

    사용하는 경우 MVC (5)는이 솔루션을 읽을!

    내가 특별히 MVC 3라는 질문을 알지만, MVC (5)이 페이지 우연히 내 상황에서 다른 사람을위한 솔루션을 게시하고 싶었다. 나는 위의 해결 방법을 시도하지만, 그들은 나를 위해 일을하지 않았다, 액션 필터에 도달하지 않았다 나는 이유를 알아낼 수 없었다. 내 프로젝트에 버전 5를 사용하여 다음과 같은 액션 필터 결국 오전 :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Mvc.Filters;
    
    namespace SydHeller.Filters
    {
        public class ValidateJSONAntiForgeryHeader : FilterAttribute, IAuthorizationFilter
        {
            public void OnAuthorization(AuthorizationContext filterContext)
            {
                string clientToken = filterContext.RequestContext.HttpContext.Request.Headers.Get(KEY_NAME);
                if (clientToken == null)
                {
                    throw new HttpAntiForgeryException(string.Format("Header does not contain {0}", KEY_NAME));
                }
    
                string serverToken = filterContext.HttpContext.Request.Cookies.Get(KEY_NAME).Value;
                if (serverToken == null)
                {
                    throw new HttpAntiForgeryException(string.Format("Cookies does not contain {0}", KEY_NAME));
                }
    
                System.Web.Helpers.AntiForgery.Validate(serverToken, clientToken);
            }
    
            private const string KEY_NAME = "__RequestVerificationToken";
        }
    }
    

    - System.Web.Mvc를 사용하여 System.Web.Mvc.Filters의 만들기에 대 한 참고가 아닌 HTTP 라이브러리 (나는 그 것들 중 하나 MVC의 V5로 변경한다는 것입니다 생각합니다. -

    그런 다음 당신의 행동 (또는 컨트롤러)에 필터 [ValidateJSONAntiForgeryHeader]를 적용하고 올바르게 호출되는 것이다.

    위의 내 레이아웃 페이지 오른쪽에서 나는) (@ AntiForgery.GetHtml있다;

    마지막으로 다음과 같이, 내 면도기 페이지에, 나는 아약스 호출을 수행합니다

    var formForgeryToken = $('input[name="__RequestVerificationToken"]').val();
    
    $.ajax({
      type: "POST",
      url: serviceURL,
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      data: requestData,
      headers: {
         "__RequestVerificationToken": formForgeryToken
      },
         success: crimeDataSuccessFunc,
         error: crimeDataErrorFunc
    });
    
  6. from https://stackoverflow.com/questions/5980389/proper-way-to-use-ajax-post-in-jquery-to-pass-model-from-strongly-typed-mvc3-vie by cc-by-sa and MIT license