programing

asp.net 의 컨트롤러에 단순 Ajax 호출하기 mvc

i4 2023. 7. 5. 20:05
반응형

asp.net 의 컨트롤러에 단순 Ajax 호출하기 mvc

ASP.NET MVC Ajax 호출을 시작하려고 합니다.

컨트롤러:

public class AjaxTestController : Controller
{
    //
    // GET: /AjaxTest/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult FirstAjax()
    {
        return Json("chamara", JsonRequestBehavior.AllowGet);
    }   
}

보기:

<head runat="server">
    <title>FirstAjax</title>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var serviceURL = '/AjaxTest/FirstAjax';

            $.ajax({
                type: "POST",
                url: serviceURL,
                data: param = "",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: successFunc,
                error: errorFunc
            });

            function successFunc(data, status) {     
                alert(data);
            }

            function errorFunc() {
                alert('error');
            }
        });
    </script>
</head>

컨트롤러 방식으로 데이터를 반환하는 알림을 출력하면 됩니다.위의 코드는 내 보기에 "차마라"를 인쇄하면 됩니다.경고가 발생하지 않습니다.

갱신하다

나는 아래와 같이 컨트롤러를 수정했고 작동하기 시작했습니다.왜 지금은 작동하는지 잘 모르겠습니다.누가 설명 좀 해주세요.매개 변수 "a"는 관련이 없습니다. 동일한 메서드 이름과 매개 변수를 가진 두 메서드를 추가할 수 없기 때문에 추가했습니다.이것이 해결책은 아닐 수도 있지만 효과가 있다고 생각합니다.

public class AjaxTestController : Controller
    {
        //
        // GET: /AjaxTest/
        [HttpGet]
        public ActionResult FirstAjax()
        {
            return View();
        }

        [HttpPost]
        public ActionResult FirstAjax(string a)
        {
            return Json("chamara", JsonRequestBehavior.AllowGet);
        }
    }

그렇지 않은 경우 데이터 특성 제거POSTING서버에 대한 임의의 항목(컨트롤러는 매개 변수를 필요로 하지 않습니다).

그리고 당신의 AJAX 방법에서 당신은 사용할 수 있습니다.Razor및 사용@Url.Action정적 문자열 대신:

$.ajax({
    url: '@Url.Action("FirstAjax", "AjaxTest")',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: successFunc,
    error: errorFunc
});

업데이트에서:

$.ajax({
    type: "POST",
    url: '@Url.Action("FirstAjax", "AjaxTest")',
    contentType: "application/json; charset=utf-8",
    data: { a: "testing" },
    dataType: "json",
    success: function() { alert('Success'); },
    error: errorFunc
});

업데이트를 완료한 후,

  1. 기본 HttpGet 요청으로 FirstAjax 작업을 처음 호출하고 빈 Html 보기를 렌더링합니다. (이전에는 사용하지 않았습니다.)
  2. 나중에 해당 보기의 DOM 요소를 로드하면 Ajax 호출이 실행되고 경고가 표시됩니다.

이전에는 HTML을 렌더링하지 않고 JSON만 브라우저로 되돌렸습니다.이제 JSON 데이터를 가져올 수 있는 HTML 보기가 렌더링됩니다.

당신은 JSON의 일반 데이터를 HTML이 아닌 것으로 직접 렌더링할 수 없습니다.

레이저를 사용하여 다음과 같은 작업을 호출하여 URL을 동적으로 변경합니다.

$.ajax({
    type: "POST",
    url: '@Url.Action("ActionName", "ControllerName")',
    contentType: "application/json; charset=utf-8",
    data: { data: "yourdata" },
    dataType: "json",
    success: function(recData) { alert('Success'); },
    error: function() { alert('A error'); }
});

Ajax 콜에서 C# Method를 클릭하기만 하면 되는 경우, 요청을 받은 경우 두 가지 문제 유형과 URL만 전달하면 됩니다. URL만 지정하면 됩니다. 아래 코드를 따르십시오. 정상적으로 작동합니다.

C# 코드:

    [HttpGet]
    public ActionResult FirstAjax()
    {
        return Json("chamara", JsonRequestBehavior.AllowGet);
    }   

요청을 받은 경우 Java 스크립트 코드

    $.ajax({
        url: 'home/FirstAjax',
        success: function(responce){ alert(responce.data)},
        error: function(responce){ alert(responce.data)}
    });

요청 후 Java 스크립트 코드 및 [HttpGet]에서 [HttpPost]로

        $.ajax({
            url: 'home/FirstAjax',
            type:'POST',
            success: function(responce){ alert(responce)},
            error: function(responce){ alert(responce)}
        });

참고: View 컨트롤러와 동일한 컨트롤러에서 FirstAjax를 사용하는 경우 url에 컨트롤러 이름이 필요하지 않습니다.맘에 들다url: 'FirstAjax',

우선 한 페이지에 두 가지 다른 버전의 jquery 라이브러리를 둘 필요가 없으며, "1.9.1" 또는 "2.0.0"은 Ajax 호출을 작동시키기에 충분합니다.

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

    public ActionResult Index()
    {
        return View();
    }

    public ActionResult FirstAjax(string a)
    {
        return Json("chamara", JsonRequestBehavior.AllowGet);
    }   

보기의 모양은 다음과 같습니다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function () {
    var a = "Test";
    $.ajax({
        url: "../../Home/FirstAjax",
        type: "GET",
        data: { a : a },
        success: function (response) {
            alert(response);
        },
        error: function (response) {
            alert(response);
        }
    });
});
</script>

업데이트 질문을 위한 것입니다.

이름과 서명이 같은 두 메서드를 가질 수 없으므로 ActionName 특성을 사용해야 합니다.

업데이트:

[HttpGet]
public ActionResult FirstAjax()
{
    Some Code--Some Code---Some Code
    return View();
}

[HttpPost]
[ActionName("FirstAjax")]
public ActionResult FirstAjaxPost()
{
    Some Code--Some Code---Some Code
    return View();
}

그리고 메소드가 액션이 되는 방법에 대한 추가 참조를 위해 이 링크를 참조하십시오.하지만 매우 좋은 참고 자료입니다.

보기;

 $.ajax({
        type: 'GET',
        cache: false,
        url: '/Login/Method',
        dataType: 'json',
        data: {  },
        error: function () {
        },
        success: function (result) {
            alert("success")
        }
    });

컨트롤러 방법

 public JsonResult Method()
 {
   return Json(new JsonResult()
      {
         Data = "Result"
      }, JsonRequestBehavior.AllowGet);
 }

url: serviceURL,사용하다

url: '<%= serviceURL%>',

successFunc에 2개의 매개 변수를 전달하고 있습니까?

function successFunc(data)
 {
   alert(data);
 }

global.asax에 "JsonValueProviderFactory"를 추가합니다.

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}

언급URL : https://stackoverflow.com/questions/16186083/making-a-simple-ajax-call-to-controller-in-asp-net-mvc

반응형