我正在尝试通过ajax将JSON对象发送到同一页面。在运行我的代码时,ajax函数确实发送数据,正如我在响应中看到的那样,PHP代码中的$ id更改为200,但我无法在网页上显示它。我已经包含了jquery.js文件(我不确定是否需要添加另一个js库)。 我试着看了很多stackoverflow的答案,但无法解决我的问题。任何帮助将不胜感激。
PHP代码:
<?php
if(isset($_POST['area_id'])){
$id = $_POST['area_id'];
echo "Area ID: ".$id;
} else {
echo "test";
}
?>
JQuery AJAX
var dat = {area_id: 200, title: 'title'};
$.ajax({
type:"POST",
data: dat,
success:function(res){
alert(res);
}
});
答案 0 :(得分:3)
[基于对问题的评论......]
您的页面未更新,因为您没有编写任何代码来更新它。 echo
只是向输出发送文本,而alert()
只是在消息框中向用户显示文本。为了更新客户端页面,您需要编写执行此操作的代码。
例如,如果您有一个id="output"
的元素并想要将响应文本设置为该元素,那么您可以这样做:
$('#output').text(res);
然后该元素将获得该文本:
<div id="output">Area ID: 200</div>
服务器端代码无法更改已发送到浏览器的页面。当客户端代码通过AJAX接收新数据时,客户端代码需要以您希望的方式使用该数据。
答案 1 :(得分:1)
将alert(res);
替换为您的显示代码。例如,假设您要在HTML中的div中显示ajax响应:
<div id="display-div"></div>
然后你需要的javascript是
$('#display-div').html(res);
答案 2 :(得分:1)
如果您要将AJAX请求发送到同一页面,则应exit()
PHP脚本:
<?php
if(isset($_POST['area_id'])){
exit("Area ID: " . trim($_POST['area_id']));
}
echo "test";
?>
这样,您就可以确保在回复中没有打印出任何其他内容。否则整个HTML页面(包括脚本)将被发回。
然后,您可以使用@David's示例将响应注入DOM。