Вопрос

Я пытаюсь поместить комментарии к стене Facebook, используя jQuery.

Но мой Ajax вызов не добивается внешнего URL.

Может кто-нибудь объяснить, как мы можем использовать внешний URL с jQuery?

Ниже мой код:

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

Это дает ошибку XMLHTTTTPREQUEST.

Это было полезно?

Решение

Все эти ответы неверны!

Как я уже сказал в моем комментарии, причина, по которой вы получаете эту ошибку, потому что URL не удаетсяТа же политика происхождения«Но вы еще можете нами функцию ajax, чтобы ударить другой домен, см. Ник Брейс отвечает на этот подобный вопрос:

Вам нужно вызвать поведение JSONP с $ .getjson (), добавив и обратный вызов =? По запросу, как это:

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

Вы можете проверить это здесь.

Не используя JSONP, вы попадаете в политику одинакового происхождения, которая блокирует XMLHTTPREQUEST от получения любых данных.

Имея в виду, следующий код должен работать:

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

Другие советы

Jquery и php.

В PHP-файле "contenido.php":

<?php
$mURL = $_GET['url'];

echo file_get_contents($mURL);
?>

В 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>

это Сценарии по пересечению сайта проблема. Общие современные браузеры не позволяют отправлять запрос на другой URL.

Google JavaScript же политика происхождения

В двух словах URL-адрес, который вы пытаетесь использовать, должен иметь тот же root и протокол. такhttp://yoursite.com.не может получить доступhttps://yoursite.com. илиhttp://anohthite.com.

Вы абсолютно должны обходить эту защиту (которая находится на уровне браузера, поскольку Galimy указал), рассмотрим модуль ProxiPass для вашего любимого веб-сервера.

Я думаю, что единственный способ, используя код интернал PHP, такой как Мануй и Фернандо.

Curl Post / Get в PHP-файле на вашем сервере -> Вызовите этот файл PHP с AJAX

PHP-файл позволяет сказать (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);

Чем использовать Ajax добраться до

fb.php?commentmeta=your comment goes here

с вашего сервера.

Или сделайте это с помощью простых HTML и JavaScript с Externel Server:

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>

Привет URL должен вызывать функцию, которая в ответ получит ответ

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

});

Попробуйте использовать / Вызов метода API Facebook

Следуйте инструкциям ниже простых шагов, которые вы сможете получить результат

Шаг 1- Создайте одну внутреннюю функцию getdetailfroomexternal на задней части. Шаг 2 - в этой функции вызовите внешний URL, используя CURL, как функция ниже

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

Шаг 3 - Вызовите эту внутреннюю функцию с вашего переднего конца, используя JavaScript / jQuery ajax.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top