source

getJ를 사용할 때 콜백 기능이 작동하지 않습니다.jQuery의 SON 함수

ittop 2023. 8. 25. 23:58
반응형

getJ를 사용할 때 콜백 기능이 작동하지 않습니다.jQuery의 SON 함수

나는 getJ를 사용하려고 합니다.jQuery의 SON 기능은 일부 데이터를 가져오고 콜백 기능을 트리거합니다.콜백 기능이 실행되지 않습니다.하지만 get 기능으로 같은 것을 시도하면 작동이 잘 됩니다.이상하게 "json"을 타입으로 넘겨도 get 기능과 연동이 됩니다.왜 이런 일이 생기는 건가요?Firefox 3 및 IE 7에서 다음 파일을 테스트했습니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>ajax test</title>
<script type="text/javascript" src="/jquery-1.3.2.min.js"></script>
</head>
<body>
<input type="button" id="test1" value="get">
<input type="button" id="test2" value="getJSON">
<input type="button" id="test3" value="get with json type">
<script type="text/javascript">
$("#test1").click(function() {
    $.get("index.html",
        function(response) {
            alert('hi');
            //works
        }
    )
});

$("#test2").click(function() {
    $.getJSON("index.html",
        function(response) {
            alert('hi');
            //doesn't work
        }
    )
});

$("#test3").click(function() {
    $.get("index.html",
        function(response) {
            alert('hi');
            //works
        },
        "json"
    )
});
</script>
</body></html>

동일한 도메인에 있는 한, 어떤 URL에 액세스하든 이 문제가 발생하는 것 같습니다.저는 데이터를 전달하려고 노력했지만, 그것은 차이가 없습니다.

물론 세 번째 테스트 기능에서 했던 것처럼 get 기능을 사용하여 문제를 해결할 수 있지만, 왜 이런 일이 발생하는지 여전히 궁금합니다.

여기에 비슷한 질문이 있다는 것을 알고 있지만 제 질문에 답하지 않았습니다.

json이 유효해야 합니다. 그렇지 않으면 콜백이 실행되지 않습니다.

$.getJSON()은 JSONP이므로 다음과 같이 변경합니다.

$("#test2").click(function() {
    $.getJSON("index.html?callback=?",
        function(response) {
                alert('hi');
        }
    )
});

서버에서 jsonp1291077863309와 같은 매개 변수 콜백을 수신합니다.응답에 콜백 함수 jsonp1291077863309(PUT_JSON_HERE)를 기록합니다.

맞아요! 이틀 동안 정신없이 만들다가.$.getJSON서버로부터 잘 형성된 JSon 문자열을 받아들이는 것, 문제는 정말로 서버에 있었습니다!Carl_Platt가 말하는 것처럼 url 매개 변수로 수신된 콜백 값을 json 출력에 추가해야 합니다.$_GET['callback']PHP로).그것은 "JSON-P 출력"이라고 불리는데, 만약 당신이 그것에 대해 검색하고 싶다면 말입니다.

Handson, 여기 PHP로 솔루션을 보여주는 페이지가 있습니다.

http://1080d.com/lang/en-us/2009/10/converting-php-to-jsonp-with-json_encode/

그리고 당신이 부르는 URL에 추가하는 것을 기억하세요 (정말 중요합니다).callback=?parameter! (통화 중인 URL이 실행 중인 jquery 스크립트를 제공하는 동일한 서버에 없는 경우에만 필요함)...

JQuery는 서버로 보내기 전에 자동으로 '?'를 편리한 값으로 바꿉니다.어떤 값이 사용되는지 걱정할 필요가 없습니다. 서버가 올바른 작업을 수행하면 모든 작업이 원활해집니다.그리고 그것이 제 경우의 문제였습니다!) :-)

도움이 되길 바랍니다!

표면 아래에서 전화를 걸면 다음과 같은 일이 일어납니다:

// ~ line 3216
getJSON: function( url, data, callback ) {
    return jQuery.get(url, data, callback, "json");
}, // ... rest of jQuery core

그럼 콜백을 방해하는 다른 무언가가 있을 겁니다

저는 **까지 시작할 것입니다.alert**각 콜백에서 서로 다른 항목('안녕' 뿐만 아니라)을 입력하면 어떤 항목이 실패/실패하는지 알 수 있습니다.

다른 많은 사람들이 언급했듯이, 당신은 유효한 JSON이 필요합니다. (즉, http://json.org/) 의 규칙을 준수합니다.getJSON이 (html을 통해) 수 것을 합니다.getJSON예와 같이).

마지막 검정이 작동하는 이유는 마지막 모수 "json"이 "유형"으로 해석되지 않기 때문입니다.다음은 작동하지 않기 때문입니다.

$("#test3").click(function() {
    $.get("index.html",
        '',
        function(response) {
                alert('hi');
                //works
        },
        "json"
    )
});

JSON 등을 잘 구성했음에도 불구하고 저는 같은 문제를 겪었습니다.웹 서비스를 조회하고 응답을 받을 수 있었지만 콜백 기능이 실행되지 않았습니다.인터넷을 검색한 후, 대부분의 인터넷 사용자들은 앱이 도메인 간 통화를 수행하기 때문에 했던 'jsonp'를 사용할 것을 제안했고, URL에 'callback?'도 추가했습니다.이것은 효과가 없었지만 반송된 JSON과의 콜백을 포함한 것이 제 문제를 해결했습니다.아래 코드는 제가 의미하는 바를 설명합니다.

//server side json formed somewhere up here
String data = callback + "("+ json +")" ;

이로 인한 반응은 다음과 같습니다.jsonp1280403476086([{"Name":"Jack Sparrow.j.Query는 문제가 없어 보였고 그래서 나에게 죽지 않았습니다.

이게 도움이 되길 바랍니다.

사용하다$.post$.getJSON()에서 MVC2를 $.getJSON또는$.get반드시 설정합니다.JsonRequestBehaviorAllowGet그렇지 않으면 요청이 콜백을 트리거하지 않도록 하는 HTML 오류가 반환됩니다.

컨트롤러의 JsonResult 메서드 위에 [HttpPost]가 나열되어 있지 않은지 확인합니다.이렇게 하면 데이터가 .getJ로 반환되지 않습니다.SON 호출.

언급URL : https://stackoverflow.com/questions/770381/callback-function-doesnt-work-when-using-getjson-function-in-jquery

반응형