簡體   English   中英

post變量沒有傳遞給php

[英]post variable not passed to php

我試圖通過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( “內容類型”, “應用程序/ x WWW的形式進行了urlencoded”);

  2. 你的PHP代碼需要返回一個json格式,例如

    echo'{“message”:“'。$ $ POST ['test']。'”}};

  3. 您的頁面需要從解析的json中獲取值(請根據php代碼注意'message')

    target.innerHTML + = data.message;

您需要將內容類型修改為正確的格式

<!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 params = "test="+document.getElementById("test").innerHTML;
    console.log(params);
    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(params);
}
ajax_call();
</script>
<!-- <script type="text/javascript" src="Scripts/friends2.js"></script> -->
</body>
</html>

您可能希望刪除JSON.parse(),以便可以在PHP端看到您可能正在進行的任何調試,否則您需要更改PHP以恢復JSON字符串。

檢查瀏覽器的開發人員控制台以檢查PHP腳本的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM