AJAX post方法:变量不会传递给目标php

时间:2011-01-25 20:58:16

标签: php javascript ajax xhtml post

我正在尝试向php发送两条信息。 1-)tent = zuzu 2-)zart = gagi

目标php简单地回应我发送的内容,以便我可以检查它是否正常工作。这是javascript:

    function boka ()
{
var mesparam = "tent=zuzu&zart=gagi";
if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}
else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) {document.getElementById("response").innerHTML=xmlhttp.responseText;} }
xmlhttp.open("POST","/mysite/oxifa/oxifat.php?tent=zuzu&zart=gagi",true); 
//xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", mesparam.length);
//xmlHttp.setRequestHeader("Connection", "close");
xmlhttp.send(mesparam);
}

这是收到请求的oxifat.php:

    <?php
echo " sign1 <br>";


echo next($_POST);
echo next($_POST);
echo next($_POST);
echo next($_POST);
echo next($_POST);
echo $_POST['tent'];
echo $_POST['zart'];
echo $_REQUEST['tent'];
echo $_REQUEST['zart'];

echo "<br> sign2";

?>

正如你所看到的,我已经包含各种各样的东西来回应$ _POST中的任何内容,但显然那里什么也没有,这就是我得到的回应:

SIGN1

注意:未定义的索引:第16行的C:\ wamp \ www \ mysite \ oxifa / oxifat.php中的帐篷

注意:未定义的索引:第17行的C:\ wamp \ www \ mysite \ oxifa / oxifat.php中的zart

注意:未定义的索引:第18行的C:\ wamp \ www \ mysite \ oxifa / oxifat.php中的帐篷

注意:未定义的索引:第19行的C:\ wamp \ www \ mysite \ oxifa / oxifat.php中的zart

sign2

关于“setRequestHeader”的三行处于评论状态。如果我包括它们,我甚至不会得到sign1。没有反应。我从中得出的结果是一切正常,但我似乎不明白如何使用post方法将数据传递给php。我该怎么做呢?我已经阅读了网上的所有内容。我只是不知道“setRequestHeader”是什么。还有一件事:如果我在目标网址的末尾放置了?tent = zuzu&amp; zart = gagi,$ _REQUEST就可以了。但那是GET,而不是我想要做的。什么是$ _POST的交易?

3 个答案:

答案 0 :(得分:0)

您能否尝试调用以下代码

function getXMLObject() {
  var xmlHttp = false;
  try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// For Old Microsoft Browsers
  }
  catch (e) {
    try {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");// For Microsoft IE 6.0+
    }
    catch (e2) {
      xmlHttp = false;// No Browser accepts the XMLHTTP Object then false
    }
  }
  if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();//For Mozilla, Opera Browsers
  }
  return xmlHttp;// Mandatory Statement returning the ajax object created
}

var xmlhttp = new getXMLObject();//xmlhttp holds the ajax object

//use this method for asynchronous communication
function doRequest(params, callback) {
  if (xmlhttp) {
    xmlhttp.open("POST", "your_script.php?" + params, true);
    xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
          callback(xmlhttp.responseText);
        }
        else {
          alert("Error retrieving information (status = " + xmlhttp.status + ")\n" + response);
        }
      }
    };
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send(null);
  }
}

并在您的PHP脚本中首先写下

print_r($_POST);

答案 1 :(得分:0)

您传入的参数包含用于GET的URL,而不是正确的POST方式。

请参阅:http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

尝试在请求中关闭参数:

xmlhttp.open( “POST”, “/ mysite的/ oxifa / oxifat.php10吨=一组组&安培; zart = gagi”,TRUE);

然后取消注释:

// xmlHttp.setRequestHeader(“Content-type”,“application / x-www-form-urlencoded”); //xmlhttp.setRequestHeader("Content-length“,mesparam.length); //xmlHttp.setRequestHeader("Connection“,”close“);

答案 2 :(得分:0)

您需要取消注释这两行,否则您的php $_POST将不会取消它。另外,正如stonemonkey77回答的那样,你也传递了获取网址中的参数。

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", mesparam.length);