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.

27
demandé sur Ben Everard 2011-01-06 12:10:11

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);
    }  
});
27
répondu Ben Everard 2017-05-23 12:18:08

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>
7
répondu Fernando 2012-09-10 21:19:42

il est Cross-site scripting problème. Les navigateurs modernes courants ne permettent pas d'envoyer une requête à une autre url.

3
répondu Andrei Andrushkevich 2011-01-06 09:20:33

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é.

1
répondu ebaum 2011-01-06 09:17:59

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>
1
répondu Atanas Atanasov 2017-09-08 08:58:41

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

0
répondu lampdev 2011-01-06 09:13:21

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.

-1
répondu MANOJ 2017-05-05 05:33:49