質問

私はjqueryのを使用してFacebookのウォールにコメントを入れしようとしています。

しかし、私のAJAX呼び出しが外部URLをalowingません。

缶誰もが、我々はjqueryの?

と外部URLを使用する方法を説明します

は以下の私のコードです:

var fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";

$.ajax({        
    url: fbURL ,
    data: "message="+commentdata,
    type: 'POST',
    success: function (resp) {
        alert(resp);
    },
    error: function(e){
        alert('Error: '+e);
    }  
});

その与えxmlhtttprequestエラーます。

役に立ちましたか?

解決

これらの答えのすべてが間違っている!

のように私は私のコメント、URLが「同じ失敗したので、あなたがそのエラーを取得している理由で言いました生成元ポリシーに「しかし、あなたはまだ私たちは、<別のドメインをヒットするAJAX機能を見ることができるのhref =」https://stackoverflow.com/questions/3873636/no-response-from-mediawiki-api-using -jquery ">ニッククレイバーズこれに類似質問するに答えます:

  

あなたはJSONPの動作をトリガーする必要があります   &コールバック=追加することにより、$ .getJSON()と?   クエリ文字列に、このような:

$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?",
function(data) {
    doSomethingWith(data); 
}); 
     

あなたがここでそれをテストすることができます。

     

JSONPを使用せずに、あなたがヒットしています   ブロックしている同一生成元ポリシー   任意の取得からXmlHttpRequestの   データバックます。

このことを念頭に、次のコードは動作するはずます:

var fbURL="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";

$.ajax({
    url: fbURL+"&callback=?",
    data: "message="+commentdata,
    type: 'POST',
    success: function (resp) {
        alert(resp);
    },
    error: function(e) {
        alert('Error: '+e);
    }  
});

他のヒント

jQueryとPHP

ではPHPファイル "contenido.php" ます:

<?php
$mURL = $_GET['url'];

echo file_get_contents($mURL);
?>
HTMLで

<script type="text/javascript" src="js/jquery/jquery.min.js"></script>
<script type="text/javascript">
    function getContent(pUrl, pDivDestino){
        var mDivDestino = $('#'+pDivDestino);

        $.ajax({
            type : 'GET',
            url : 'contenido.php',
            dataType : 'html',
            data: {
                url : pUrl
            },
            success : function(data){                                               
                mDivDestino.html(data);
            }   
        });
    }
</script>

<a href="#" onclick="javascript:getContent('http://www.google.com/', 'contenido')">Get Google</a>
<div id="contenido"></div>

これはクロスサイトスクリプティングの問題です。一般的な最近のブラウザは別のURLにリクエストを送信することはできません。

のgoogle javascriptの同一生成元ポリシー

一言で言えば、あなたが使用しようとしているURLは、同じルートとプロトコルを持っている必要があります。 そう http://yoursite.comする アクセスすることはできません https://yoursite.com のか http://anothersite.comする

あなたは(galimyが指摘したように、ブラウザのレベルである)、この保護バイパス絶対に必要があり、お好みのWebサーバーのProxyPassのモジュールを検討します。

私は唯一の方法はお勧めMANOJとフェルナンドのようなinternelのPHPコードを使用することであると思います。

カールポスト/サーバー上のPHPファイルで入手 - >アヤックス

で、このPHPファイルを呼び出します

PHPファイルを言ってみましょう(fb.php):

$commentdata=$_GET['commentdata'];
$fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";
curl_setopt($ch, CURLOPT_URL,$fbUrl);
curl_setopt($ch, CURLOPT_POST, 1);
// POST data here
curl_setopt($ch, CURLOPT_POSTFIELDS,
        "message=".$commentdata);

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);
echo $server_output;
curl_close ($ch);

に使用AJAXのGETより

fb.php?commentmeta=your comment goes here
サーバーから

またはexternelサーバから簡単なHTMLとJavaScriptでこれを行います。

Message: <input type="text" id="message">
<input type="submit" onclick='PostMessage()'>
<script>
function PostMessage() {
var comment = document.getElementById('message').value;
    window.location.assign('http://yourdomain.tld/fb.php?commentmeta='+comment)
}
</script>

こんにちはURLは見返りに応答を与える関数を呼び出すべきである。

$.ajax({
url:'function to call url',
...
...

});

の呼び出し/ API使ってみてくださいFacebookの方法

は簡単な手順以下に従ってご意志の結果を得ることができます。

ステップ1 - あなたのバックエンドでのgetDetailFromExternalの 1つの内部関数を作成します。 ステップ2-その機能において機能以下のようにカールを使用して外部URLを呼び出す

 function getDetailFromExternal($p1,$p2) {

        $url = "http://request url with parameters";
        $ch = curl_init();
        curl_setopt_array($ch, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true            
        ));

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        curl_close($ch);
        echo $output;
        exit;
    }

ステップ3 - 呼び出すことを使って、フロントエンドから内部機能のjavascript / jqueryのアヤックスます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top