[jquery] getJSON을 사용하여 post 메소드로 데이터를 보내는 방법은 무엇입니까?

위의 방법을 사용하고 있으며 URL에서 하나의 매개 변수로 잘 작동합니다.

예 : Students/getstud/1컨트롤러 / 액션 / 파라미터 형식이 적용되는 경우.

이제 두 개의 매개 변수를 받아들이고 JSON 객체를 반환하는 학생 컨트롤러의 작업이 있습니다.

그렇다면 $.getJSON()게시 방법 을 사용하여 데이터를 게시하려면 어떻게해야 합니까?

유사한 방법도 허용됩니다.

요점은 AJAX로 컨트롤러의 동작을 호출하는 것입니다.



답변

$ .getJSON () 메서드는 POST가 아닌 HTTP GET을 수행합니다. $ .post () 를 사용해야합니다.

$.post(url, dataToBeSent, function(data, textStatus) {
  //data contains the JSON object
  //textStatus contains the status: success, error, etc
}, "json");

이 호출에서 dataToBeSent원하는 것은 무엇이든 될 수 있지만 html 양식의 내용을 보내는 경우 serialize 메서드를 사용하여 양식에서 POST 용 데이터를 만들 수 있습니다 .

var dataToBeSent = $("form").serialize();


답변

이것은 내 “한 줄”솔루션입니다.

$.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }

jsonp 및 POST 메소드를 사용하기 위해이 함수는 “콜백”GET 매개 변수를 URL에 추가합니다. 다음은 사용 방법입니다.

$.postJSON("http://example.com/json.php",{ id : 287 }, function (data) {
   console.log(data.name);
});

서버는 콜백 GET 매개 변수를 처리하고 json 문자열을 다음과 같이 반환 할 준비가되어 있어야합니다.

jsonp000000 ({"name":"John", "age": 25});

여기서 “jsonp000000″은 콜백 GET 값입니다.

PHP에서 구현은 다음과 같습니다.

print_r($_GET['callback']."(".json_encode($myarr).");");

교차 도메인 테스트를 수행했는데 작동하는 것 같습니다. 그래도 더 많은 테스트가 필요합니다.


답변

다음 줄을 추가하십시오 <script>(jQuery가로드 된 후 아무 데나 게시하기 전에) :

$.postJSON = function(url, data, func)
{
    $.post(url, data, func, 'json');
}

(일부 / 전체) 교체 $.getJSON와를 $.postJSON즐기십시오!

에서와 동일한 Javascript 콜백 함수를 사용할 수 있습니다 $.getJSON. 서버 측 변경이 필요하지 않습니다. (음, 항상 $_REQUESTPHP에서 사용 하는 것이 좋습니다 . http://php.net/manual/en/reserved.variables.request.php , $ _REQUEST, $ _GET 및 $ _POST 중 어느 것이 가장 빠릅니까? )

이것은 @lepe의 솔루션보다 간단합니다.


답변

getJSON을 수행하는 코드가 있습니다. 나는 단순히 그것을 포스트로 대체했습니다. 놀랍게도 작동했습니다.

   $.post("@Url.Action("Command")", { id: id, xml: xml })
      .done(function (response) {
           // stuff
        })
        .fail(function (jqxhr, textStatus, error) {
           // stuff
        });



    [HttpPost]
    public JsonResult Command(int id, string xml)
    {
          // stuff
    } 


답변

방금 게시물과 if를 사용했습니다.

data = getDataObjectByForm(form);
var jqxhr = $.post(url, data, function(){}, 'json')
    .done(function (response) {
        if (response instanceof Object)
            var json = response;
        else
            var json = $.parseJSON(response);
        // console.log(response);
        // console.log(json);
        jsonToDom(json);
        if (json.reload != undefined && json.reload)
            location.reload();
        $("body").delay(1000).css("cursor", "default");
    })
    .fail(function (jqxhr, textStatus, error) {
        var err = textStatus + ", " + error;
        console.log("Request Failed: " + err);
        alert("Fehler!");
    });


답변

$.getJSON()AJAX 요청을 보내고 응답으로 JSON 데이터를 다시 가져 오는 데 매우 편리합니다. 아아, jQuery 문서에는 이름을 지정해야하는 자매 함수가 없습니다 $.postJSON(). 왜 그것을 사용 $.getJSON()하고 끝내지 않습니까? 글쎄, 아마도 당신은 많은 양의 데이터를 보내고 싶거나, 제 경우에는 IE7이 GET 요청으로 제대로 작동하지 않기를 원할 것입니다.

사실입니다. 현재 $.postJSON()메소드는 없지만 $.post()함수 에 네 번째 매개 변수 (유형)를 지정하여 동일한 작업을 수행 할 수 있습니다 .

내 코드는 다음과 같습니다.

$.post('script.php', data, function(response) {
  // Do something with the request
}, 'json');


답변

두 개의 매개 변수 만있는 경우 다음을 수행 할 수 있습니다.

$.getJSON('/url-you-are-posting-to',data,function(result){

    //do something useful with returned result//
    result.variable-in-result;
});