JQuery getJSON для внешней PHP-страницы

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

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

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

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

и я хочу, чтобы мой test.php возвращал простой «тест»:

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

Вероятно, я совершу невероятную новичковую ошибку, но, похоже, я не могу понять это. Кроме того, если это работает, как я могу отправить данные на мою страницу test.php, как вы бы сделали, например test.php? Id = 15?


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

Возможно, у вас нет обратного вызова в test.php. Кроме того, 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:// . Если у вас есть test.html и test.php в том же домене, попробуйте использовать относительные пути (и никаких обратных вызовов).

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

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

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

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