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, когда вы получаете данные с сервера вне вашего контроля.