Я пытаюсь проверить $ .getJSON () на локальном хосте, но данные не возвращаются.
Пожалуйста, поправьте меня, если я ошибаюсь.
PHP:
$person['name'] = !empty($_GET['name']) ? $_GET['name'] : 'name';
$person['age'] = !empty($_GET['age']) ? $_GET['age'] : '00';
return json_encode($person);
?>
HTML / JQuery:
<script>
$(document).ready(function(){
$('.start').click(function(){
$.getJSON('http://localhost/ewoe/server.php?name=natasha&age=22', alert(data.name));
})
}); //end ready
</script>
Все файлы можно найти в одном каталоге.
Хотя ошибка, которую я получаю после нажатия кнопки .start, 'data not set'
,
Проблема на самом деле в выводе PHP.
Причина в том, что PHP, будучи языком на стороне сервера, не выводит в HTML материал с return
, Если хотите распечатать их ты должен echo
их.
Следовательно return
это не ответ, ответ echo
,
Ваш php должен быть:
<?php
$person['name'] = !empty($_GET['name']) ? $_GET['name'] : 'name';
$person['age'] = !empty($_GET['age']) ? $_GET['age'] : '00';
echo json_encode($person);
Если вы получаете ошибки на No 'Access-Control-Allow-Origin'
Вы должны попытаться указать локальный путь, а не полный путь:
$.getJSON('server.php?name=natasha&age=22', ...);
—
НОТА
На самом деле не знаю, что вы там делаете, но обратите внимание на возможные манипуляции с вашим сценарием.
Делая это, кто-то может увидеть источник вашего файла и отправить запрос на server.php
перейдя в www.yoursite/ewoe/server.php?name=....
Возможно, вам следует использовать $_POST
в PHP и JQuery $.post
запрашивая формат json, вот так:
$.post('server.php', {name : 'natasha', age: 22}, function(response) {
console.log(response.name)
}, 'json');
Вы должны включить предупреждение в анонимную функцию:
$.getJSON('http://localhost/ewoe/server.php?name=natasha&age=22', function(data) {
alert(data.name);
});