数据未通过Ajax传递给PHP脚本

时间:2014-06-19 23:01:26

标签: javascript php html ajax

我试图通过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'] ;
?>

2 个答案:

答案 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);