我正在尝试在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'
。
问题实际上在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', ...);
-注意
不知道你在那里做什么,但需要注意的是,要小心可能的脚本操作。
通过这样做,有人可以看到你的文件的来源,并通过转到www.yoursite/ewoe/server.php?name=....
向server.php
发送请求
也许您应该在PHP中使用$_POST
,并使用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);
});