0

我有这样的情况。有如下所示的选择表单,并且想要调用 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>

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

4

2 回答 2

1

实际上,index.php返回整个页面,其中嵌入了所有 HTML。

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

于 2012-07-22T19:15:04.997 回答
1

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

<?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>
于 2012-07-22T22:44:58.937 回答