web-dev-qa-db-ja.com

jqueryで外部URLを呼び出す方法は?

Jqueryを使用してFacebookの壁にコメントを入れようとしています。

しかし、私のajax呼び出しは外部URLを許可しません。

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エラーが発生します。

32
user319198

これらの答えはすべて間違っています!

私がコメントで言ったように、URLが「 Same Origin policy 」に失敗するためにエラーが発生する理由ですが、まだAJAX関数別のドメインをヒットするには、 この類似の質問に対するニッククレイバーの回答 を参照してください。

&callback =?を追加して、$。getJSON()でJSONPの動作をトリガーする必要があります。次のようなクエリ文字列で:

$.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);
    }  
});
28
Ben Everard

JQueryとPHP

In PHP file "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>
7
Fernando

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

唯一の方法は、internel PHP MANOJやFernandoのようなコードを使用することです。

サーバー上のphpファイルでpost/getをカールします->このphpファイルをajaxで呼び出します

PHP file let say(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 to

fb.php?commentmeta=your comment goes here

サーバーから。

または、外部サーバーの単純な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>
1
Atanas Atanasov

google JavaScript同じOriginポリシー

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

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

1
ebaum

こんにちはurlは、応答として応答を返す関数を呼び出す必要があります

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

});

aPI facebookメソッドを使用/呼び出してみてください

0
lampdev