尽管有预期的价值,整个页面的结果

时间:2012-07-22 19:02:11

标签: php ajax forms select

我有这种情况。有如下所示的选择形式并且想要调用ajax函数来获得依赖于更改选择表单的结果,但是从ajax获取整个页面

这是脚本

<html>
<head>
    <title>HI</title>
    <link rel="stylesheet" href="./scripts/css/default.css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<form method="post">
<select name="s" id="s">
    <option value="one">A</option>
    <option value="two">B</option>
    <option value="three">C</option>
</select>
</form>

Hello guys ...
<div id="xe"></div>

<script type="text/javascript">
document.getElementById("s").onchange = function(){
    var h = false;
    if (window.XMLHttpRequest){
        h = new XMLHttpRequest();
    }
    if (h){
        h.open("POST","index.php",true);
        h.onreadystatechange = function(){
            if (h.readyState==4 && h.status==200){
                document.getElementById("xe").innerHTML = h.responseText;
            }
        };
        h.send("s=" + document.getElementById("s").value);
    }
};
</script>

<?php
if (isset($_POST['s'])){
    echo $_POST['s'];
}
?>


</body>
</html>

任何想法?请帮忙,谢谢...

2 个答案:

答案 0 :(得分:1)

确实index.php返回整个页面,将所有HTML嵌入其中。

您可以制作另一个partial.php,它会在浏览器中返回您需要在页面中注入的部分,并将您的AJAX请求指向它。

答案 1 :(得分:1)

您需要将$ _POST行放在文件的顶部,然后退出():

<?php
if (isset($_POST['s'])){
    echo $_POST['s'];
    exit;
}
?>
<html>
<head>
    <title>HI</title>
    <link rel="stylesheet" href="./scripts/css/default.css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<form method="post">
<select name="s" id="s">
    <option value="one">A</option>
    <option value="two">B</option>
    <option value="three">C</option>
</select>
</form>

Hello guys ...
<div id="xe"></div>

<script type="text/javascript">
document.getElementById("s").onchange = function(){
    var h = false;
    if (window.XMLHttpRequest){
        h = new XMLHttpRequest();
    }
    if (h){
        h.open("POST","index.php",true);
        h.onreadystatechange = function(){
            if (h.readyState==4 && h.status==200){
                document.getElementById("xe").innerHTML = h.responseText;
            }
        };
        h.send("s=" + document.getElementById("s").value);
    }
};
</script>


</body>
</html>