使用ajax将数据发布到php

时间:2011-07-07 06:08:32

标签: php ajax post

我试图将一些参数从JS发送到php以返回一些依赖于id im发送的xml但是由于某种原因它没有捕获我发送的参数。

参数变量

      site = "http://localhost/playerdata.php";
      var id =  document.getElementById('playerId').innerHTML;
      query = "?id="
      params = query + id;
      ajax(site, params);

所以Iam调用函数

      function ajax(site, params){
      var xmlhttp;
      var i;
      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
       xmlhttp=new XMLHttpRequest();
         }
       else
     {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
      xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
      xmlDoc=xmlhttp.responseXML;   
       }
        } 

     xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')  
     xmlhttp.setRequestHeader("Content-length", params.length);
     xmlhttp.setRequestHeader("Connection", "close");


      xmlhttp.open("POST", site, false);
      xmlhttp.send(params);
        } 

我在playerdata.php中的php代码应该抓住参数但是没有爱!

   <?php  header('Content-Type: text/xml');
    echo "<player>";?>

    <?
    $id = $_POST['id'];

    echo $id."</player>";

    ?>

理论上所有这一切都应该有效,但是我不知道我的生活会弄清楚我哪里出错了。

有人能指出我正确的方向吗?是否有可能以这种方式发布数据?

2 个答案:

答案 0 :(得分:0)

不应该是query = "?id="

应为query = "id="

如果它不起作用,pl。看看下面的解决方案。

在playerdata.php中,在第二个区块中,你错过了php。

应该是

<?php
 $id = ...

?>

此外,通过在行

之前添加警报来确保参数正确
xmlhttp.send(params);

喜欢,

alert(params);
xmlhttp.send(params);

答案 1 :(得分:0)

试试吧:

var site = "http://localhost/playerdata.php",
   id =  document.getElementById('playerId').innerHTML,
   params = "id="+ id,
   xmlDoc = null;


function ajax(url, params) {
    var req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
        try {
            req = new XMLHttpRequest();
        } catch(e) {
            req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                req = false;
            }
        }
    }
    if(req) {
        req.onreadystatechange = processReqChange;
        req.open("POST", url, true);
        req.send(params);
    }
}

和处理请求:

function processReqChange() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
           xmlDoc=req.responseXML;
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}

来源表单http://developer.apple.com/internet/webcontent/xmlhttpreq.html