【问题标题】:getting result whole page despite expected value尽管有预期值,但得到整个页面的结果
【发布时间】:2012-07-21 03:15:34
【问题描述】:

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

有什么想法吗?请帮忙,谢谢...

【问题讨论】:

    标签: php ajax forms select


    【解决方案1】:

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

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

    【讨论】:

    • 我只是在这里写了这个例子,总的来说我是按照你回答的那样做的(我的意思是在其他文件中编写php脚本)但结果还是一样
    【解决方案2】:

    您需要将 $_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>
    

    【讨论】:

    • 我已经猜到了,我错过了 http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");这个声明:)
    • 太棒了!不要忘记回答您自己的问题并标记为完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多