Wie externe URL in Jquery anrufen?
-
26-09-2019 - |
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.
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.