我试图通过ajax将变量 number 的值发送到PHP脚本。但PHP脚本不会在浏览器上打开时打印所需的输出。试过但在这里找不到什么错误。 有什么指针吗?
的index.html
<button type="submit" class="btn btn-success" id = 'first' onclick='process();'>Submit</button>
<script>
var number = 0;
function process()
{
number++;
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
var data = "num=" + number;
xhr.open("POST", "index.php", true);
xhr.send(data);
}
</script>
的index.php
<?php
session_start();
$number = $_POST['num'];
$_SESSION['numb'] = $number;
echo $_SESSION['numb'] ;
?>
答案 0 :(得分:0)
编辑我的长卷蹩脚的答案,因为你修复了关闭的大括号...但是bloodyKnuckles是对的你在你的过程中也需要一些东西&#39;函数从您的PHP页面获取响应并输出它......或者您想要做的任何事情。你基本上可以使用方法&#39; onreadystatechange&#39;在XMLHttpRequest对象中,然后查找&#39; readyState&#39;属性值为4表示一切都已完成。这是一个简单的例子,只是将结果输出到控制台(您可以使用所选浏览器中的开发人员工具查看)。
<script>
var number = 0;
function process()
{
number++;
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
var data = "num=" + number;
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200){
console.log('xhr.readyState=',xhr.readyState);
console.log('xhr.status=',xhr.status);
console.log('response=',xhr.responseText);
}
else if (xhr.readyState == 1 ){
xhr.send(data)
}
};
xhr.open("POST", "ajax-test.php", true);
}
</script>
随着您的进一步发展,您可能希望将PHP页面更新为仅在POST值存在时更新会话。
<?php
//ini_set('display_errors',1);
//ini_set('display_startup_errors',1);
//error_reporting(-1);
if(isset($_POST['num'])){
session_start();
$_SESSION['numb'] = $_POST['num'];
echo $_SESSION['numb'];
}
?>
您可以取消注释那些ini_set和error_reporting行,以尝试弄清楚PHP脚本的运行情况。
答案 1 :(得分:0)
这是因为您没有使用请求发送标题信息...
附加此代码
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", data.length);
xhr.setRequestHeader("Connection", "close");
后
xhr.open("POST", "index.php", true);