2011-01-06 4 views
24

Ich versuche, Kommentare zu Facebook-Wand mit jquery zu setzen.Wie externe URL in Jquery aufrufen?

Aber mein Ajax Anruf nicht externe URL.

kann jemand erklären, wie können wir externe URL mit jquery verwenden?

unten ist mein Code:

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); 
    } 
}); 

seiner geben xmlhtttprequest Fehler.

+1

Sie bekommen diesen Fehler, weil die URL der "Same Origin Policy" fehlschlägt, siehe http://en.wikipedia.org/ wiki/Same_origin_policy. –

Antwort

25

Alle diese Antworten sind falsch!

Wie ich in meinem Kommentar, der Grund, warum Sie diesen Fehler, wenn es darum, weil die URL der „Same origin policy“ fehlschlägt, aber Sie können uns immer noch die AJAX-Funktion eine andere Domain zu treffen, sehen Nick Cravers answer on this similar question:

Sie müssen das JSONP-Verhalten mit $ .getJSON() auslösen, indem Sie & callback =? auf dem Abfragezeichenfolgeflag, wie folgt aus:

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

Sie können es hier testen.

Ohne JSONP verwenden Sie die Same Origin Policy treffen sind, die aus immer alle Daten zurück die XmlHttpRequest blockiert.

dies mit im Auge, sollte die Folge Code arbeiten:

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); 
    } 
}); 
+1

Funktioniert immer noch nicht. denselben Fehler geben. –

+0

$ .getJSON verwendet, um date.here zu erhalten, ich möchte Daten an der Wand posten –

+0

Welchen Fehler Text erhalten Sie? –

0

Hallo url sollte eine Funktion, die im Gegenzug fordern Antwort geben

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

}); 

Versuchen Sie es mit/API Facebook-Methode aufrufen

+0

die URL ist hier nicht das Problem, die gleiche Herkunft Politik ist umgangen werden. –

3

es Cross-site scripting Problem. Die üblichen modernen Browser erlauben es nicht, eine Anfrage an eine andere URL zu senden.

+11

Sie meinen "gleiche Herkunft Politik". – karim79

+0

@Andrei Andrushkevich, Richtig! Sie haben also einen Ausweg oder Work-Around dafür? Ich meine, wenn speziell eine andere URL angerufen werden soll, was soll man tun? – HarsH1610

1

JavaScript Same Origin Policy google

auf den Punkt gebracht, die URL Sie die gleiche Wurzel und Protokoll zu verwenden versuchen müssen. so http://yoursite.com nicht https://yoursite.com oder http://anothersite.com

zugreifen können ist, dass Sie unbedingt diesen Schutz umgehen muss (die auf Browserebene ist, wie galimy darauf hingewiesen), sollten Sie den Proxypass-Modul für Ihren Lieblings-Web-Server.

7

JQuery und PHP

In PHP-Datei „contenido.php ":

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

echo file_get_contents($mURL); 
?> 

In 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> 
+0

+1, ein anderer Weg –

+0

Ich habe Ihre Antwort bearbeitet, um Ihre Unterschrift zu entfernen. Bitte lesen Sie die FAQ zu Signaturen und Taglines. http://stackoverflow.com/faq#signatures – Greg

-1

die folgenden einfachen Schritten folgen Sie können das Ergebnis

Schritt 1 Erstellen Sie eine interne Funktion getDetailFromExternal in Ihrem hinteren Ende bekommen Schritt 2- Rufen Sie in dieser Funktion die externe URL auf, indem Sie cUrl wie unten unter

verwenden 210

Schritt 3 - Rufen Sie diese interne Funktion von Ihrem Frontend auf, indem Sie javascript/jquery Ajax verwenden.

1

Ich denke, der einzige Weg ist, mit Hilfe von PHP PHP-Code wie MANOJ und Fernando vorschlagen.

curl Post/get in PHP-Datei auf Ihrem Server -> nennt diese PHP-Datei mit Ajax

Die PHP-Datei sagen lassen (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); 

als AJAX GET verwenden, um

fb.php?commentmeta=your comment goes here 

von Ihrem Server.

Oder tun dies mit einfachen HTML und JavaScript von externel Server:

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> 
Verwandte Themen