Frage

Ich versuche, Kommentare auf Facebook Wand stellen jquery verwenden.

Aber mein Ajax-Aufruf externen url nicht alowing.

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

seine Angabe xmlhtttprequest Fehler.

War es hilfreich?

Lösung

Alle diese Antworten sind falsch!

Wie ich in meinem Kommentar, der Grund, warum Sie diesen Fehler, wenn es darum, weil die URL der „ Samt origin policy "aber man kann immer noch uns, die AJAX-Funktion eine andere Domain zu treffen, finden Sie unter Nick Cravers Antwort auf diese ähnliche Frage :

  

Sie müssen JSONP Verhalten auslösen   mit $ .getJSON () durch Zusatz von & Rückruf =?   auf der 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 schlagen die   Same Origin Policy, die Blockierung   die XmlHttpRequest von jedem bekommen   Daten zurück.

In diesem Sinne 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);
    }  
});

Andere Tipps

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>

es ist Cross-Site-Scripting- Problem. Gemeinsamer moderner Browser erlaubt keine Anforderung an einem anderen URL zu senden.

Google die Javascript Same Origin Policy

auf den Punkt gebracht, die URL, die Sie verwenden möchten, müssen die gleiche Wurzel und Protokoll haben. so http://yoursite.com habe keinen Zugriff https://yoursite.com oder http://anothersite.com

ist Sie unbedingt Bypass dieses Schutzes (die auf Browserebene ist, wie galimy darauf hingewiesen), das Modul für Proxypass Ihres Lieblings-Web-Server in Betracht ziehen.

ich glaube, der einzige Weg ist, durch die Verwendung internel 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 Lassen Sie sagen (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 die Verwendung AJAX GET

fb.php?commentmeta=your comment goes here

von Ihrem Server.

oder tut 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>

Hallo url soll eine Funktion seinen Aufruf die im Gegenzug Antwort geben

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

});

versuchen Sie es mit / Aufruf API facebook Methode

Befolgen Sie die folgenden einfachen Schritten Sie können das Ergebnis erhalten

Schritt 1 Erstellen Sie eine interne Funktion getDetailFromExternal in Ihrem Back-End. Schritt 2 In dieser Funktion durch die externen URL-Aufruf cUrl mit wie unten Funktion

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

Schritt 3 Rufen Sie die interne Funktion von Ihrem Frontend mithilfe von Javascript / Jquery Ajax.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top