php - post 变量未传递给 php

标签 php html ajax http post

我正在尝试通过 AJAX 调用发送 POST 变量,但 php 脚本似乎没有接收到它。这是我的 html 文件

<!doctype html>
<html>
<head>
    <title>Testing</title>
</head>
<body>
    <h1 id="test">Testing</h1>
    <input type="text" id="search" placeholder="search"/>
    <div id="target">
    </div>
<script type="text/javascript">
function ajax_call(){
    var hr=new XMLHttpRequest();
    var target=document.getElementById("target");
    hr.open("POST", "phptest.php", true);
    hr.setRequestHeader("Content-Type"," application/x-www-form-urlencoded");
    hr.onreadystatechange=function(){
        if(hr.readyState==4 && hr.status==200){
            var data=(hr.responseText);
            target.innerHTML="";
            target.innerHTML+=data;

        }
    }
    hr.send("test="+document.getElementById("test").innerHTML);
}
ajax_call();
</script>
<!-- <script type="text/javascript" src="Scripts/friends2.js"></script> -->
</body>
</html>

这是 PHP 文件:-

<?php
header("Content-Type: application/json");
//$search=$_POST['search'];
/*if(empty($_POST)){
    echo "not set";
}*/

echo $_POST['test'];
?>

我删除了 JSON 解析,当我取消注释 if(empty..) 行时,我看到“未设置”

最佳答案

好像没有什么问题

  1. 关于 setRequestHeader(需要 2 个参数,但在您的示例代码中只给出了一个)

    hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

  2. 您的 php 代码需要返回 json 格式,例如

    echo '{"message":"'.$_POST['test'].'"}';

  3. 您的页面需要从已解析的 json 中获取值(请注意 php 代码中的“消息”)

    target.innerHTML+=data.message;

关于php - post 变量未传递给 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240600/

相关文章:

php - Laravel Backpack 自定义创建页面并传入值

php - 包含数据库连接错误的 php 文件

html - Chrome 中没有换行的文本区域

javascript - 如何保存/缓存 dom,以便当您点击后退按钮时页面按原样加载?

c# - 将 JSON 对象发布到 WCF 服务对象始终为 null

php - 停止 JQuery 中的动画延迟

php - 无法在 JavaScript 中访问 PHP 数组,初始化为数组的 JavaScript 对象在 Chrome 开发者工具中最终变为空

javascript - 当我的 script.js 在 Codecademy 上运行时无法制作它

jquery - 亨德尔的音量 slider 没有显示?

java - 如何使用ajax调用显示servlet中定义的数组列表的值