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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top