2012-02-24 4 views
0

북마크 렛을 빌드하여 현재있는 페이지의 URL을 PHP 파일로 보내고 확인 응답을 받고이를 사용자에게 표시 할 수있게하려고합니다.북마크 렛의 Ajax 요청

몇 가지 방법을 시도했지만 한 가지 방법 만 사용하여 요청을 보내는 데 성공했지만 응답을 표시하지 않았습니다.

javascript: (function (e, a, g, h, f, c, b, d) { 
    if (!(f = e.jQuery) || g > f.fn.jquery || h(f)) { 
     c = a.createElement("script"); 
     c.type = "text/javascript"; 
     c.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + g + "/jquery.min.js"; 
     c.onload = c.onreadystatechange = function() { 
      if (!b && (!(d = this.readyState) || d == "loaded" || d == "complete")) { 
       h((f = e.jQuery).noConflict(1), b = 1); 
       f(c).remove() 
      } 
     }; 
     a.documentElement.childNodes[0].appendChild(c) 
    } 
})(window, document, "1.3.2", function ($, L) { 
    $.get("http://mysite.com/recommend.php", { 
     url: encodeURIComponent(document.URL) 
    }, function (data) { 
     if (data.error) { 
      alert('Looks like someone else added this site just before you did, Thank you though!'); 
     } else { 
      alert(document.URL + ' successfully added!'); 
     } 
    }, 'json'); 
}); 

어쨌든 작동하도록 할 수 있습니까? 원본 정책에 대한 어딘가를 읽었습니다. - 내가하려는 일을 성취 할 수있는 다른 방법이 있습니까? - 목표는 북마크릿을 작성하고, 서버와 통신하고 응답을 표시하는 것입니다.

답변

4

표준 Ajax 상호 도메인을 사용할 수 없습니다. 브라우저는 "동일한 도메인"정책을 시행합니다. JSONP를 사용해야합니다.

var recURL='http://mysite/com/recommend.php?url=' 
    + encodeURIComponent(document.URL); 
document.body.appendChild(document.createElement('script')).src=recURL; 

recommend.php 자바 스크립트를 반환해야합니다 : http://api.jquery.com/jQuery.ajax/

더 간단한 해결책이이있을 수 : http://en.wikipedia.org/wiki/JSONP

"JSONP"이 페이지를 검색은 JSONP와 jQuery를 사용하는 방법에 시작하기 같은 코드 : alert(document.URL + ' successfully added!');