Ajax和PHP同页不起作用

时间:2016-01-11 23:11:23

标签: javascript php jquery ajax

我正在尝试通过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);
    }
});

3 个答案:

答案 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。