0

サーバーからスクリプトを取得する埋め込み可能なJavaScriptを提供したいと思います。これにより、ユーザー(埋め込み可能なjsが含まれているページ)から詳細が取得され、サーバーに戻されます。これを達成するにはどうすればよいですか。

これは私が提供する埋め込み可能な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);
});

しかし、$。get("http://xyz.com/process.php?dataToProcess="+read,function(data){//クロスドメインajaxリクエストにつながることがわかります

クロスドメインajaxの問題を解決したくありません。2つのパーティ(埋め込み可能なスクリプトを使用するパーティとサーバー)の間でシームレスに通信できるようにしたいと考えています。

4

2 に答える 2

0

これをクロスドメインiframeハックを使用して、2つの異なるドメイン間で通信しました。これを読むことをお勧めします

http://softwareas.com/cross-domain-communication-with-iframes

于 2011-02-25T08:33:57.553 に答える
0

GETリクエストだけが必要な場合は、JSON-P(http://en.wikipedia.org/wiki/JSON#JSONP)を使用できます。

JavaScriptでは、構文は次のようになります。

$.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ハンドラーは、最初に「コールバック」クエリパラメーターの値を読み取り、次にその値で応答をラップする必要があります。

たとえば、$。getJSON()がパラメータ「callback = abcd」をphpページに送信した場合、phpページは次を返す必要があります。

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

注意すべきいくつかのこと:

  • encodeURIComponent();を使用してサーバーに送信するユーザーデータを必ずエスケープしてください。

  • process.phpがユーザーデータを変更する場合、XSRF攻撃(http://en.wikipedia.org/wiki/Cross-site_request_forgery)につながる可能性があるため、GETリクエストを使用するときは注意が必要です。

于 2011-02-13T05:08:45.503 に答える