Pregunta

Estoy intentando poner comentarios en el muro de Facebook usando jquery.

Pero mi llamada ajax no permite una URL externa.

¿Alguien puede explicar cómo podemos usar una URL externa con jquery?

A continuación está mi código:

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

está dando un error xmlhtttprequest.

¿Fue útil?

Solución

Todas estas respuestas son incorrectas!

Como dije en mi comentario, la razón por la que está recibiendo ese error porque la URL falla la " Mismo política de origen "pero se puede todavía nos la función AJAX para golpear a otro dominio, consulte respuesta Nick Cravers en esta pregunta similar :

  

Es necesario para desencadenar el comportamiento JSONP   con $ .getJSON () mediante la adición de devolución de llamada y =?   en la cadena de consulta, así:

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

Se puede probar aquí.

     

Sin utilizar JSONP que está golpeando la   política del mismo origen que está bloqueando   la XmlHttpRequest recibas   volver datos.

Con esto en mente, el código de seguimiento debería funcionar:

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

Otros consejos

jQuery y PHP

En el archivo 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>

Cross-site scripting problema . los navegadores modernos comunes no permite enviar la petición a otra URL.

Google de la misma política de origen javascript

En pocas palabras, la URL que está intentando utilizar debe tener la misma raíz y el protocolo. asi que http://yoursite.com No puede acceder https://yoursite.com o http://anothersite.com

que es absolutamente necesario derivación de esta protección (que es a nivel del navegador, como se señaló galimy), considere el módulo ProxyPass para su servidor web favorito.

Creo que la única forma es mediante el uso de internel código PHP como información MANOJ y Fernando sugieren.

posterior rizo / ponerse en archivo PHP en su servidor -> llamar a este archivo PHP con el Ajax

El archivo PHP Vamos a decir (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 el uso de AJAX GET a

fb.php?commentmeta=your comment goes here

desde su servidor.

O hacer esto con una simple HTML y JavaScript desde un servidor 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>

Hola, la URL debería llamar a una función que a cambio dará respuesta.

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

});

intente usar/llamar al método API de Facebook

Siga el siguiente pasos simples que usted será capaz de obtener el resultado

Paso 1- Crear una función interna getDetailFromExternal en su extremo posterior. paso 2- En ese función de llamada de la URL externa usando enrollamiento, como a continuación de función

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

Paso 3- Call que la función interna de su extremo frontal mediante el uso de javascript / jquery Ajax.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top