Como chamar URL externo em jQuery?
-
26-09-2019 - |
Pergunta
Estou tentando colocar comentários no Wall do Facebook usando o jQuery.
Mas minha chamada de Ajax não está alivando URL externo.
Alguém pode explicar como podemos usar o URL externo com jQuery?
Abaixo está o meu 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 um erro xmlHtttPrequest.
Solução
Todas essas respostas estão erradas!
Como eu disse no meu comentário, a razão pela qual você está recebendo esse erro porque o URL falha no "Mesma política de origem", mas você ainda pode nós a função Ajax para atingir outro domínio, veja Nick Cravers responde nesta pergunta semelhante:
Você precisa desencadear o comportamento do JSONP com $ .getjson () adicionando e retorno de chamada =? Na história de consulta, assim:
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?", function(data) { doSomethingWith(data); });
Você pode testá -lo aqui.
Sem usar o JSONP, você está atingindo a política da mesma origem, que está bloqueando o xmlHttPrequest de recuperar os dados.
Com isso em mente, o código a seguir deve 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);
}
});
Outras dicas
JQuery e PHP
No arquivo php "contenido.php":
<?php
$mURL = $_GET['url'];
echo file_get_contents($mURL);
?>
Em 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>
isso é Scripts de sítio problema. Os navegadores modernos comuns não permitem enviar solicitação para outro URL.
Google o Javascript Mesmo Política de Originidade
Em poucas palavras, o URL que você está tentando usar deve ter a mesma raiz e protocolo. assimhttp://yoursite.comnão pode acessarhttps://yoursite.com ouhttp://anothersite.com
Você absolutamente deve ignorar essa proteção (que está no nível do navegador, como Galimy apontou), considere o módulo ProxyPass para o seu servidor web favorito.
Eu acho que a única maneira é usar o código PHP do Internel como Manoj e Fernando sugerem.
Curl Post/Get no arquivo php no seu servidor -> Ligue para este arquivo php com AJAX
O arquivo php deixa dizer (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);
Do que usar ajax chegar a
fb.php?commentmeta=your comment goes here
do seu servidor.
Ou faça isso com HTML e JavaScript simples do Servidor externo:
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>
Oi URL deve estar chamando uma função que, em troca, dará resposta
$.ajax({
url:'function to call url',
...
...
});
Tente usar/ligar para o método do Facebook da API
Siga as etapas simples abaixo, você poderá obter o resultado
Etapa 1- Crie uma função interna getDetailfromexternal no seu back -end. Etapa 2- nessa função, ligue para o URL externo usando o CURL como a função abaixo
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;
}
Etapa 3- Ligue para essa função interna do seu front end usando JavaScript/JQuery Ajax.