2011-09-10 3 views
2

원본 페이지의 도메인과 다른 도메인의 페이지에 데이터를 게시 할 수있는 스크립트를 작성하려고했습니다. 그 일을하는 것에 관한 모든 것을 읽었고, 정보가 jQuery.getJSON 함수로 안내해주었습니다. 그러나 이것이 작동하는지 확신 할 수 없습니다. 나는 (이 예를 들어, 단지 C1, C2, C3, C4 등을 사용할 수 있습니다 C5) 자바 스크립트 변수의 소수가

:

여기 내 시나리오입니다. 그래서 나는이 5 개의 변수의 값을 다른 도메인의 스크립트에 보내고 싶습니다.

는 나는이 사용 $의 갔지 같은() 또는 $ .post()를 할 것입니다 방법을 이해 -이 비슷한 일을 할 것입니다 :

$.post("myscript.php", { c1:c1, c2:c2, c3:c3, c4:c4, c5:c5 }); 

을 나는 분명 (1)해서 getJSON 경우 (2) 예인 경우, getJSON 함수 (대 .post 함수)에 대한 jQuery 호출의 차이점과 서버 측에서 수행해야 할 다른 것이있을 경우 (제 목적을 위해 지금은 값을 시각적으로 다시 표시하고 싶습니다).

편집 : 답을 읽는 데 아마도 명확히해야합니다. 내가 찾고있는 것은 한 페이지에서 다른 도메인의 다른 페이지로 데이터를 보내는 방법 (가능하다면)입니다. 보안 문제를 이해합니다. 가능하지 않은 경우에는 짜증나지만 이해합니다. 그러나 jQuery를 사용하는 방법이 있다면, 그게 제가 찾고있는 것입니다 (그리고 c1 - c5 변수를 사용하는 작은 예제). 감사.

답변

2

물론 JSONP 모드에서 $.getJSON()을 사용하여 다른 서버 (크로스 도메인)로 데이터를 보낼 수 있습니다. 데이터가 쿼리 문자열의 일부가되어야하며, 쿼리 문자열을 무한정 가져올 수 없기 때문에 보낼 수있는 데이터의 양이 제한됩니다. 요청이 정상적인 HTTP GET (params)으로 나타나므로 서버 측에서 데이터를 처리하는 방법에는 변화가 없습니다.

다음은 jQuery API 문서에서 가져온 예제입니다. 이것은 Flickr JSON API에서 가장 최근에 나온 개 그림 4 개를 가져옵니다.

Working Demo

var c1 = "dog"; 
var c2 = "any"; 

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { 
    tags: c1, 
    tagmode: c2, 
    format: "json" 
}, function(data) { 
    $.each(data.items, function(i, item) { 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
}); 

c1c2GET 매개 변수로 전달하는 방법을 알 수 있습니다. jsoncallback=? 매개 변수는 jQuery에 JSONP 요청으로 요청하도록 지시하고 상호 도메인 호출을하는 동안 필수입니다.

이것은 스크립트가 볼 수있는 방법입니다 :

var orderId = 1337; 
var customer = encodeURIComponent("John Doe"); 
var amount = 420; 

$.getJSON("http://www.otherserver?jsoncallback=?", { 
    oId: orderId, 
    cust: customer, 
    amnt: amount 
}, 

function(data) { 
    //process response if any 
}); 

샘플 HTTP 요청이 생성 :

http://www.otherserver/?jsoncallback=jQuery16305821700256783515_1315685969538&oId=1337&cust=John%2520Doe&amnt=420&_=1315685969636 

HTH.

+0

아주 좋은 - 내가 찾고있는 것. 감사! – OneNerd

+0

좋아요! 천만에요. –

2

게시물을 게시해야하는 경우가 아닙니다. 그 이름은 꽤 묘사적입니다 : get ... json. json 리턴을 처리하는 요청입니다. 그러나 당신이 정말로 흥미있는 것은 json을 보내는 것이고, 당신은 특별한 것을 요구하지 않는다는 것입니다. 당신의 혼란 JQuery와의 postjson 기능의 부족과 관련이있는 경우

그러나, 이것은 HTTP POST 요청으로 데이터를 전송합니다 http://abeautifulsite.net/blog/2008/05/postjson-for-jquery/

1

.post() 메소드를 도움이 될 수 있습니다. 여기서는 보내는 데이터의 데이터 유형 (json 또는 xml 등)을 자동으로 찾습니다. .getJSON()은 데이터를 http get request로 보내고 여기서 데이터의 데이터 유형은 JSON으로 지정됩니다.

1

getJSON()에 대한 사용이 없으므로 결과를 처리 할 처리기를 지정하지 않았기 때문에 들리는 것 같습니다. getJSON은 요청에서 반환 된 데이터 유형이 JSON 인 경우 유용합니다.

0

SOP (Same Origin Policy) 때문에 다른 도메인으로 AJAX를 호출 할 수 없습니다.

정상적인 POST로 할 수 있지만 브라우저가 응답을 처리 (새 HTML 페이지를 표시하거나 리디렉션을 수행하는 등)해야합니다.

getJSON은 GET 호출이며 쿼리 문자열 URL로 키 값 쌍을 보낼 수 있습니다. $ .post는 POST 호출이고, cand는 데이터를 페이로드로 보내며, URL의 쿼리 문자열로 키 값 쌍을 전송합니다. getJSON은 $ .get (url, handler, 'json')과 비슷하지만 반환 값이 json 데이터인지 확인합니다.

그러나 IMG 태그를 동적으로 만드는 것만 큼 쉽게 다른 도메인에 GET 요청을 보낼 수 있습니다.

JSONP를 사용할 수도 있지만 현재 컨텍스트를 유지하려면 GET 호출이어야합니다.

건배.

0

음, http://api.jquery.com/jQuery.getJSON/의 API 문서에서 :

"설명 :.는 GET HTTP 요청을 사용하여 서버에서로드 JSON 인코딩 된 데이터"

짧은 대답은 "아니오"입니다.

관련 문제