2012-02-24 44 views
0

現在のページのURLをphpファイルに送信し、確認応答を得てユーザーに表示するブックマークレットを作成したいと考えています。ブックマークレットのAjaxリクエスト

私はいくつかのことを試しましたが、1つの方法しか働かず、要求を送信するのに成功しましたが、応答を表示しませんでした。

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を使用する必要があります。 http://en.wikipedia.org/wiki/JSONP

JSONPとjQueryの使用方法を始めるために "JSONP" のために、このページを検索:

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

recommend.phpはJavascriptを返す必要があります。もっと簡単な解決策は、この、この可能性がhttp://api.jquery.com/jQuery.ajax/

次のようなコード:alert(document.URL + ' successfully added!');