$ .getJSON不返回任何数据

时间:2015-04-04 20:48:11

标签: php jquery json getjson

我正在尝试在localhost上测试$ .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'

2 个答案:

答案 0 :(得分:1)

问题实际上在PHP输出中。 原因是作为服务器端语言的PHP不会将return输出到HTML。如果您想打印出来,则必须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=....发送请求

也许您应该使用PHP中的$_POST和请求json格式的jQuery $.post,如下所示:

$.post('server.php', {name : 'natasha', age: 22}, function(response) {
    console.log(response.name)
}, 'json');

答案 1 :(得分:0)

你应该将警报包装到匿名函数中:

$.getJSON('http://localhost/ewoe/server.php?name=natasha&age=22', function(data) {
    alert(data.name);
});