code

jquery Ajax 호출 - 데이터 매개 변수가 MVC 컨트롤러 작업으로 전달되지 않습니다.

starcafe 2023. 2. 16. 21:55
반응형

jquery Ajax 호출 - 데이터 매개 변수가 MVC 컨트롤러 작업으로 전달되지 않습니다.

jQuery ajax 호출에서 MVC 컨트롤러 메서드로 두 개의 문자열 매개 변수를 전달하고 json 응답을 기다리고 있습니다.클라이언트측에는 파라미터가 입력되어 있습니다만, 서버측에는 일치하는 파라미터가 null입니다.

javascript는 다음과 같습니다.

$.ajax({  
  type: "POST",  
  contentType: "application/json; charset=utf-8",  
  url: "List/AddItem",  
  data: "{ ListID: '1', ItemName: 'test' }",  
  dataType: "json",  
  success: function(response) { alert("item added"); },  
  error: function(xhr, ajaxOptions, thrownError) { alert(xhr.responseText); }
});

컨트롤러 방식은 다음과 같습니다.

Function AddItem(ByVal ListID As String, ByVal ItemName As String) As JsonResult
   'code removed for brevity
   'ListID is nothing and ItemName is nothing upon arrival.
   return nothing
End Function

내가 뭘 잘못하고 있지?

나는 시도했다.

<input id="btnTest" type="button" value="button" />

<script type="text/javascript">
    $(document).ready( function() {
      $('#btnTest').click( function() {
        $.ajax({
          type: "POST", 
          url: "/Login/Test",
          data: { ListID: '1', ItemName: 'test' },
          dataType: "json",
          success: function(response) { alert(response); },
          error: function(xhr, ajaxOptions, thrownError) { alert(xhr.responseText); }
        });
      });
    });
</script>

및 C#:

[HttpPost]
public ActionResult Test(string ListID, string ItemName)
{
    return Content(ListID + " " + ItemName);
}

됐다.제거한다.contentType및 세트data큰따옴표 없이.

Ajax 캐시에 문제가 있는 경우 이를 해제할 수 있습니다.

$.ajaxSetup({cache: false});

-> 콘텐츠 추가 필요유형: "application/json; charset=utf-8",

<script type="text/javascript">
    $(document).ready( function() {
      $('#btnTest').click( function() {
        $.ajax({
          type: "POST", 
          url: "/Login/Test",
          data: { ListID: '1', ItemName: 'test' },
          dataType: "json",
          contentType: "application/json; charset=utf-8",
          success: function(response) { alert(response); },
          error: function(xhr, ajaxOptions, thrownError) { alert(xhr.responseText); }
        });
      });
    });
</script>
  var json = {"ListID" : "1", "ItemName":"test"};
    $.ajax({
            url: url,
            type: 'POST',        
            data: username, 
            cache:false,
            beforeSend: function(xhr) {  
                xhr.setRequestHeader("Accept", "application/json");  
                xhr.setRequestHeader("Content-Type", "application/json");  
            },       
            success:function(response){
             console.log("Success")
            },
              error : function(xhr, status, error) {
            console.log("error")
            }
);

저 같은 경우에는, 만약 이 장치를 제거한다면,contentType「Internal Server Error」(내부 서버 에러)가 표시됩니다.

여러 번의 시도 끝에 얻은 성과는 다음과 같습니다.

var request =  $.ajax({
    type: 'POST',
    url: '/ControllerName/ActionName' ,
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ projId: 1, userId:1 }), //hard-coded value used for simplicity
    dataType: 'json'
});

request.done(function(msg) {
    alert(msg);
});

request.fail(function (jqXHR, textStatus, errorThrown) {
    alert("Request failed: " + jqXHR.responseStart +"-" + textStatus + "-" + errorThrown);
});

컨트롤러 코드는 다음과 같습니다.

public JsonResult ActionName(int projId, int userId)
{
    var obj = new ClassName();

    var result = obj.MethodName(projId, userId); // variable used for readability
    return Json(result, JsonRequestBehavior.AllowGet);
}

ASP의 케이스에 주의해 주세요.NET은 조금 다르므로 신청해야 합니다.JSON.stringify()이 답변의 갱신에 기재되어 있는 데이터로 이행합니다.

언급URL : https://stackoverflow.com/questions/2002163/jquery-ajax-call-data-parameters-are-not-being-passed-to-mvc-controller-action

반응형