Jquery getJSON на внешнюю страницу PHP

Я пытался сделать запрос ajax на внешний сервер. Я узнал, что мне нужно использовать getJSON для этого из соображений безопасности ?

теперь я не могу сделать простой вызов на внешнюю страницу. Я пытался упростить его, насколько мог, но он все еще не работает. У меня есть 2 файла, тест.html & тест.в PHP

мой тест.html делает такой вызов localhost для тестирования:

    $.getJSON("http://localhost/OutVoice/services/test.php", function(json){
    alert("JSON Data: " + json);
});

и я хочу свой тест.php для возврата простой "тест":

$results = "test";
echo json_encode($results);

Я, вероятно, делаю какую-то невероятную ошибку новичка, но я не могу понять это. Кроме того, если это работает, как я могу отправить данные в свой тест.php страница, как вы бы сделать, как тест.РНР?id=15 ?


теста.html-страница вызывает тест.php страница на localhost, тот же каталог Я не получаю никаких ошибок, просто без предупреждения ..

3 ответов


это мог бы быть, что у вас нет обратного вызова в тесте.РНР. Кроме того,json_encode принимает только массив:

$results = array("key" => "value");
echo $_GET['callback'] . '(' . json_encode($results) . ')';
// the callback stuff is only needed if you're requesting from different domains

jQuery автоматически переключается на JSONP (т. е. использует теги скриптов вместо XMLHttpRequest) при использовании http://. Если у вас есть тест.HTML и тест.PHP на том же домене, попробуйте использовать относительные пути (и никаких обратных вызовов).


будьте осторожны с ответом Моффа. У него есть общая уязвимость XSS:http://www.metaltoad.com/blog/using-jsonp-safely


самым простым решением было бы добавить приведенный ниже код перед любым выходом в ваш тест.php файл, то у вас есть больше гибкости с тем, какие методы вы используете, стандартный вызов ajax должен работать.

header ('Access-Control-Allow-Origin: *');

однако используйте функцию обратного вызова json, когда вы получаете данные с сервера вне вашего контроля.