Domanda

Sto cercando di inserire commenti sulla bacheca di Facebook utilizzando jquery.

Ma la mia chiamata Ajax non consente l'URL esterno.

qualcuno può spiegare come possiamo utilizzare l'URL esterno con jquery?

di seguito è riportato il mio codice:

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);
    }  
});

sta dando l'errore xmlhtttprequest.

È stato utile?

Soluzione

Tutte queste risposte sono sbagliate!

Come ho detto nel mio commento, il motivo che stai ricevendo questo errore perché l'URL non supera il " Same politica di origine "ma è ancora possibile a noi la funzione AJAX per colpire un altro dominio, vedere Nick Cravers risposta su questa domanda simile :

  

È necessario innescare comportamenti JSONP   con $ GetJSON () aggiungendo & callback =?   in querystring, in questo modo:

$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?",
function(data) {
    doSomethingWith(data); 
}); 
     

È possibile verificare qui.

     

Senza usare JSONP si sta colpendo la   criterio dell'origine che blocca   XMLHttpRequest dall'ottenere qualsiasi   di nuovo i dati.

Con questo in mente, il codice di seguito dovrebbe funzionare:

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);
    }  
});

Altri suggerimenti

JQuery e PHP

file In PHP "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>

Cross-site scripting problema . browser moderni comune non consente di inviare richiesta a un altro URL.

Google la stessa politica di origine javascript

in poche parole, l'URL che si sta tentando di utilizzare deve avere la stessa radice e il protocollo. così http://yoursite.com non poter accedere https://yoursite.com o http://anothersite.com

si è assolutamente MUST bypass questa protezione (che è a livello di browser, come galimy ha sottolineato), si consideri il modulo ProxyPass per il server web preferito.

Credo che l'unico modo è quello di utilizzare internel codice PHP come MANOJ e Fernando suggeriscono.

Paletto Flessione / entrare in file PHP sul vostro server -> chiamare questo file php con ajax

Il file PHP diciamo (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);

che utilizzare AJAX GET per

fb.php?commentmeta=your comment goes here

dal server.

O farlo con semplice HTML e JavaScript dal server 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>

L'ciao URL dovrebbe chiamare una funzione che in cambio darà una risposta

$.ajax({
url:'function to call url',
...
...

});

prova a utilizzare/chiamare il metodo API Facebook

Seguire la sottostante semplici passi sarà in grado di ottenere il risultato

Fase 1 Creare una funzione interna getDetailFromExternal nel tuo back-end. passo 2- In tale funzione chiamare l'URL esterno utilizzando cUrl come sotto funzione

 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;
    }

Fase 3 chiamata quella funzione interna dal front-end utilizzando JavaScript / jQuery Ajax.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top