如何正确使用带有POST和params的XMLHTTPRequest? PHP没有获得POST信息

时间:2012-02-22 14:55:56

标签: php javascript ajax google-maps web

我正在尝试构建Google地图网络应用。我存储单位并想要编辑它们。我提供了一个代码,用户可以插入并从之前存储的单元中获取信息。我正在使用PHP和JS。

这就是我要做的事情:

在客户端,我使用:

var clave="<?=$_POST['identificador']?>";
    var params="clave="+clave;

function downloadUrl(params,url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest; //en cierto modo es una API, acepta requests HTTP.

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request.responseText, request.status);
    }
  };

  request.open("POST", url, true);
  request.send(params);
}

我从以前的PHP页面获得“identifyicador”,它获得了正确的价值。

然后我调用downloadURL函数:

downloadUrl(params,"phpsqlajax_genxml1.php", function(data) {
    var xml = parseXml(data); 
    var markers = xml.documentElement.getElementsByTagName("marker"); //coge todos los markers
    //GETS XML RESPONSE AND PUTS MARKERS INTO MAPS
    }
  });

但是当我打电话给phpsqlajax_genxml1.php时,它没有获得POST值:

$clave = $_POST["clave"];
echo $clave; //this is not echoing nothing
$query = "SELECT * FROM markers WHERE clave = '{$clave}'";

有没有更好的方法来做这件事或我做错了什么?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

正如Rob W回答的那样,您可以通过添加一些标题来解决这个问题:

 request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");request.setRequestHeader("Content-Length", params.length);