我正在尝试向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的交易?
答案 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);