2011-02-12 2 views
0

내 서버에서 스크립트를 가져올 수있는 삽입 가능한 자바 스크립트를 제공하고 싶습니다. 그러면 사용자 (내 embeddable js가있는 페이지)에서 세부 정보를 가져 와서 내 서버로 다시 가져옵니다. 어떻게이 일을 성취 할 것인가.스크립트 태그 해킹 + AJAX의 두 번째 레벨 이후에 통신하는 방법

이것은 내가 제공 가능한 임베디드 js입니다.

<script> 
     (function() { 
      read="This is the data which is entered by the user"; 
      var istreet = document.createElement('script'); istreet.type = 'text/javascript'; istreet.async = true; 
      istreet.src = 'http://xyz.com/a.php; 
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(istreet); 
     })(); 

    </script> 

그리고이 http://xyz.com/a.php

$('<div id="content"></div>').appendTo('body'); 
$('#content').html(' 
    Some html to inject to the page\'s dom . 
'); 
$.get("http://xyz.com/process.php?dataToProcess="+read,function(data){ 
alert(data); 
}); 

의 코드입니다하지만은 $ 갔지 ("http://xyz.com/process.php?dataToProcess="+ 읽어 볼, 기능 (데이터) { //

내가 크로스 도메인 아약스 문제를 해결하지 않으려는 크로스 도메인 아약스 요청에 연결됩니다. 나는 임베드 스크립트와 하나 (두 당사자 사이의 의사 소통을 할 수 싶어 내 서버) 원활하게.

답변

0

GET 요청 만 있으면 JSON-P (http://en.wikipedia.org/wiki/JSON#JSONP)를 사용할 수 있습니다. 자바 스크립트에서

은, 구문은 다음과 같이 될 것이다 : "콜백 ="

$.getJSON("http://xyz.com/process.php?dataToProcess=" + encodeURIComponent(read) + "&callback=?", 
    function(result){ 
    alert(result); 
    }); 

속성은 JSON-P 요청임을 JQuery에 알립니다. JQuery는 임의의 문자열을 "?" (자세한 내용은 여기 : http://api.jquery.com/jQuery.getJSON/).

제대로 작동하게하려면 process.php 처리기도 변경해야합니다. PHP 처리기는 먼저 "callback"쿼리 매개 변수의 값을 읽은 다음 해당 값으로 응답을 래핑해야합니다. $ .getJSON()는 PHP 페이지에 "콜백 = ABCD"를 매개 변수를 보내는 경우

예를 들어, PHP 페이지가 반환해야합니다 :

abcd({"data": "json object with the result"}); 

몇 가지를주의하는 것이 :

  • encodeURIComponent()를 사용하여 서버에 보내는 사용자 데이터를 이스케이프해야합니다.

  • process.php가 사용자 데이터를 수정하는 경우 XSRF 공격 (http://en.wikipedia.org/wiki/Cross-site_request_forgery)으로 이어질 수 있으므로 GET 요청을 사용할 때는주의해야합니다.

관련 문제