it-swarm.com.de

Wie externe URL in JQuery aufrufen?

Ich versuche mit jquery Kommentare auf die Facebook-Pinnwand zu setzen.

Aber mein Ajax-Aufruf lässt keine externe URL zu.

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

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

es gibt einen xmlhtttprequest-Fehler.

32
user319198

Alle diese Antworten sind falsch!

Wie ich in meinem Kommentar sagte, der Grund, warum Sie diesen Fehler erhalten, weil die URL die " Same Origin Policy " nicht erfüllt, aber Sie können uns trotzdem die AJAX Funktion Um auf eine andere Domain zuzugreifen, lesen Sie Nick Cravers beantwortet diese ähnliche Frage :

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

$.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 stoßen Sie auf dieselbe Origin-Richtlinie, die verhindert, dass XmlHttpRequest Daten zurückgibt.

In diesem Sinne sollte der folgende Code funktionieren:

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 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>
7
Fernando

es ist Cross-Site-Scripting Problem. Gängige moderne Browser erlauben es nicht, Anfragen an eine andere URL zu senden.

Ich denke, der einzige Weg ist die Verwendung von internel PHP Code wie MANOJ und Fernando vorschlagen.

curl post/get in php datei auf deinem server -> rufe diese php datei mit ajax auf

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

Dann benutze AJAX GET to

fb.php?commentmeta=your comment goes here

von Ihrem Server.

Oder tun Sie dies mit einfachem HTML und JavaScript von einem externen 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>
1
Atanas Atanasov

google das javascript der gleichen ursprungsrichtlinie

kurz gesagt, die URL, die Sie verwenden möchten, muss denselben Stamm und dasselbe Protokoll haben. Also http://yoursite.com kann nicht auf https://yoursite.com oder http://anothersite.com zugreifen

wenn Sie diesen Schutz unbedingt umgehen MÜSSEN (der sich auf Browserebene befindet, wie galimy hervorhob), ziehen Sie das ProxyPass-Modul für Ihren bevorzugten Webserver in Betracht.

1
ebaum

Hi url sollte eine Funktion aufrufen, die im Gegenzug eine Antwort gibt

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

});

versuchen Sie es mit/Aufruf der API Facebook-Methode

0
lampdev