반응형
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
반응형
'code' 카테고리의 다른 글
스프링 리다이렉트 속성: addAttribute() vs addFlashAttribute() (0) | 2023.02.16 |
---|---|
카테고리를 포스트 워드프레스에 관련짓는 방법 (0) | 2023.02.16 |
JSON 필드 이름을 다른 개체 필드 이름에 매핑하려면 어떻게 해야 합니까? (0) | 2023.02.12 |
주의: ob_end_flush(): zlib 출력 압축(1)의 버퍼를 전송하지 못했습니다. (0) | 2023.02.12 |
AngularJs에서 ng-repeat으로 필터링(키, 값)하는 방법 (0) | 2023.02.12 |