Comment appeler url externe jquery?
-
26-09-2019 - |
Question
Je suis en train de mettre des commentaires sur le mur Facebook en utilisant jquery.
Mais mon appel ajax pas alowing url externe.
peut-on expliquer comment utiliser url externe avec jquery?
ci-dessous est mon 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);
}
});
son erreur donnant xmlhtttprequest.
La solution
Toutes ces réponses sont fausses!
Comme je l'ai dit dans mon commentaire, la raison pour laquelle vous obtenez cette erreur parce que l'URL échoue le « même la politique origine «mais vous pouvez toujours nous la fonction AJAX pour frapper un autre domaine, voir Nick Cravers réponse sur cette question similaire :
Vous devez déclencher un comportement JSONP avec .getJSON $ () en ajoutant & rappel =? sur la chaîne de requête, comme ceci:
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?", function(data) { doSomethingWith(data); });
Vous pouvez tester ici.
Sans utiliser JSONP vous frappez la politique d'origine qui bloque XmlHttpRequest d'obtenir une les données de retour.
Dans cet esprit, le code de suivi devrait fonctionner:
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);
}
});
Autres conseils
JQuery et PHP
Dans le fichier PHP "contenido.php":
<?php
$mURL = $_GET['url'];
echo file_get_contents($mURL);
?>
En 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>
il est Cross-site scripting problème. les navigateurs modernes communs ne permet pas d'envoyer la demande à une autre URL.
google le javascript règle d'origine
en un mot, l'URL que vous essayez d'utiliser doit avoir la même racine et protocole. alors http://yoursite.com ne peut pas accéder ou https://yoursite.com http://anothersite.com
est que vous devez absolument contourner cette protection (qui est au niveau du navigateur, comme galimy souligné), considérez le module ProxyPass pour votre serveur web préféré.
Je pense que la seule façon est en utilisant internel code PHP comme MANOJ et Fernando suggèrent.
après boucle / get dans le fichier php sur votre serveur -> appeler ce fichier php avec ajax
Le fichier PHP laisser dire (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);
que d'utiliser GET AJAX pour
fb.php?commentmeta=your comment goes here
de votre serveur.
Ou faire avec HTML simple et JavaScript à partir du serveur externel:
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>
Salut url devrait appeler une fonction qui en retour donnera une réponse
$.ajax({
url:'function to call url',
...
...
});
essayez d'utiliser / méthode d'appel facebook API
Suivez les étapes ci-dessous simples, vous serez en mesure d'obtenir le résultat
Étape 1 Créer une fonction interne getDetailFromExternal dans votre arrière. Étape 2 Dans cette fonction appeler l'URL externe à l'aide de Flexion comme ci-dessous fonction
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;
}
Étape 3 appeler cette fonction interne de votre extrémité avant en utilisant javascript / jquery Ajax.