위의 방법을 사용하고 있으며 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
. 서버 측 변경이 필요하지 않습니다. (음, 항상 $_REQUEST
PHP에서 사용 하는 것이 좋습니다 . 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;
});
