Comment appeler une url externe en jquery?
j'essaie de mettre des commentaires sur le mur Facebook en utilisant jquery.
mais mon appel ajax n'a pas d'url externe .
est-ce que quelqu'un peut expliquer comment utiliser une 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);
}
});
its giving xmlhttttprequest error.
7 réponses
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 politique d'origine ", mais vous pouvez encore nous la fonction AJAX pour frapper un autre domaine, voir Nick Cravers réponse sur cette question similaire :
vous devez déclencher le comportement JSONP avec.$ getJSON () en ajoutant &callback=? dans 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 le tester ici.
sans utiliser JSONP vous frappez le Politique de la même origine qui bloque le XmlHttpRequest d'obtenir les données en arrière.
avec ceci à l'esprit, le code suivant 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);
}
});
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 courants ne permettent pas d'envoyer une requête à une autre url.
google le JavaScript même politique d'origine
en un mot, l'url que vous essayez d'utiliser doivent avoir la même racine et le protocole. si http://yoursite.com ne peut pas accéder https://yoursite.com ou http://anothersite.com
est que vous devez absolument contourner cette protection (qui est au niveau du navigateur, comme galimy l'a souligné), envisager le module ProxyPass pour votre serveur web préféré.
je pense que la seule façon est d'utiliser le code PHP internel comme MANOJ et Fernando le suggèrent.
curl post/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 AJAX obtenir à
fb.php?commentmeta=your comment goes here
de votre serveur.
ou faites-le avec HTML simple et JavaScript du serveur externe:
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>
L'url de Hi devrait appeler une fonction qui en retour donnera la réponse
$.ajax({
url:'function to call url',
...
...
});
essayez d'utiliser/l'appel de l'API facebook de la méthode
suivez les étapes simples ci-dessous vous pourrez obtenir le résultat
Étape 1-Créer une fonction interne getDetailFromExternal dans votre dos. étape 2 - dans cette fonction appeler l'url externe en utilisant cUrl comme ci-dessous la 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-appelez cette fonction interne de votre front end en utilisant javascript / Jquery Ajax.