JsonResult를 반환하는 컨트롤러가 있습니다.
[HttpGet]
public JsonResult ShopMarkers()
{
var shops = repository.Shops;
return Json(shops);
}
내 견해로는 해당 메서드의 데이터로 var를 채우고 싶습니다. 이전 MVC 프로젝트에서는 var를 채우기 위해 ajax 호출을 작성했던 것을 기억합니다. 이 같은:
var markers;
$.ajax({
type: 'POST',
url: '/Map/ShopMarkers',
dataType: 'json',
contentType: dataType,
data: data,
success: function (result) {
markers = result;
}
});
또는 뷰와 Json에 문자열을 반환 할 수 있으며 스크립트 태그 내에서 구문 분석 할 수 있습니다.
둘 다 옳지 않은 것 같습니다. .Net Core에서 내 변수를 채우는 더 좋은 방법이 있습니까?
클라이언트 코드는 현재 POST 유형 요청으로 ajax 호출을 수행하고 있습니다. 그러나 당신의 행동 방법은 HttpGet으로 장식되어 있습니다. 따라서 404 오류가 발생해야합니다 (브라우저 개발 도구를 검사하면 네트워크 (ajax) 호출 상태를 볼 수 있음).
[HttpPost]
public JsonResult ShopMarkers()
{
var shops = repository.Shops;
return Json(shops);
}
ShopMarkers
메서드 내부의 코드 가 충돌하지 않는다고 가정하면 작동합니다 ! (예외를 던지는 정도)
클라이언트 측 코드에서 객체를 보내려고합니다. 복잡한 객체를 보내는 경우에는 contentType을 "application / json"으로 지정하고 JSON.stringify
메서드를 사용하여 데이터를 보내야합니다 .
var dataType = "application/json";
var data = { userId: 12, Password: 'ss' };
$.ajax({
type: 'POST',
url: '/Home/ShopMarkers',
dataType: 'json', // not really needed in your case
contentType: dataType,
data: JSON.stringify(data),
success: function (result) {
var markers = result;
console.log(result);
//Use result only here. Not outside
}
});
ajax 호출은 요청 본문에 데이터를 전송 [FromBody]
하므로 모델 바인더가 게시 된 데이터 (요청 본문에서)를 매개 변수에 매핑 할 수 있도록 속성을 사용 하여 메소드 매개 변수를 장식해야 합니다.
[HttpPost]
public JsonResult ShopMarkers([FromBody] YourUserViewModel model)
{
//to do : Return some JSON
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다