Метод поста AJAX: переменные не передаются целевому php - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь отправить две части информации на php.1-) tent = zuzu 2-) zart = gagi

target 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

Примечание: неопределенный индекс: палатка в C: \ wamp \ www \ mysite \ oxifa / oxifat.php в строке 16

Примечание: неопределенный индекс: zart в C: \ wamp \ www \ mysite \ oxifa / oxifat.php в строке 17

Примечание: неопределенный индекс: палатка в C: \wamp \ www \ mysite \ oxifa / oxifat.php в строке 18

Примечание: неопределенный индекс: zart в C: \ wamp \ www \ mysite \ oxifa / oxifat.php в строке 19

sign2

три строки о "setRequestHeader" находятся в статусе комментария.Если я включу их, я даже не получу знак1.Нет ответаИз этого я понял, что все в порядке, но я не понимаю, как использовать метод post для передачи данных в php.Как мне это сделать?Я прочитал все в сети.Я только не знаю, для чего "setRequestHeader".Еще одна вещь: если я добавлю? Tent = zuzu & zart = gagi в конце целевого URL, то $ _REQUEST будет работать.Но это ПОЛУЧИТЬ, а не то, что я пытаюсь сделать.Какова сделка $ _POST?

Ответы [ 3 ]

0 голосов
/ 26 января 2011

Вы передаете параметры с URL, который предназначен для GET, а не для POST.

См .: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

Попробуйте снять параметры в запросе здесь:

xmlhttp.open ( "POST", "/ MySite / oxifa / oxifat.php палатка = Zuzu & Zart = gagi?", Правда);

И затем раскомментируйте это:

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

0 голосов
/ 26 января 2011

Вам нужно раскомментировать эти 2 строки, иначе вы php $_POST не собираетесь его поднимать. также, как ответил stonemonkey77, вы также передаете параметры в get url.

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", mesparam.length);
0 голосов
/ 26 января 2011

Не могли бы вы попытаться вызвать следующий код

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...