[英]Data not getting passed via Ajax to PHP script
我正在尝试通过ajax将变量编号的值发送到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'] ;
?>
编辑我long脚的la脚答案,因为您固定了大括号...但是bloodyKnuckles是对的,您还需要在“ process”函数中添加一些内容,以从PHP页面获取响应并输出响应...或者您想要执行的任何操作。 您基本上可以在XMLHttpRequest对象中使用方法“ onreadystatechange”,然后查找“ readyState”属性值为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脚本正在发生什么。
这是因为您没有通过请求发送标头信息...
追加此代码
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.