Размещение данных с помощью ajax в php - PullRequest
2 голосов
/ 07 июля 2011

Я пытаюсь отправить некоторые параметры из JS в php, чтобы вернуть некоторый xml, зависящий от идентификатора, который я отправляю, однако по какой-то причине он не перехватывает передаваемые мной параметры.

Переменные параметра

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

Итак, я вызываю функцию

      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);
        } 

Мой php-код в playerdata.php должен захватывать параметры, но, увы, нет любви!

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

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

    echo $id."</player>";

    ?>

Все это в теории должно работатьоднако я не могу на всю жизнь понять, где я ошибся.

Может ли кто-нибудь указать мне правильное направление?Можно ли POST данные таким образом?

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

давайте попробуем:

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

0 голосов
/ 07 июля 2011

Не должно быть query = "?id="

Это должно быть query = "id="

Если это не работает, пл. посмотрите на следующие решения.

В playerdata.php, во втором блоке, вы пропустили php.

Это должно быть похоже на

<?php
 $id = ...

?>

Также убедитесь, что параметры верны, добавив предупреждение перед строкой

xmlhttp.send(params);

Нравится,

alert(params);
xmlhttp.send(params);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...