XMLhttpRequest> PHP> XMLhttpRequest - PullRequest
4 голосов
/ 15 июня 2010

У меня есть еще один вопрос. XMLhttpRequests преследует меня. Теперь все в базе данных, но мне нужны эти данные для обновления моей страницы при первой загрузке или перезагрузке. XHR запускается в файле JavaScript, который запускает PHP-Script. PHP-скрипт доступа к базе данных MySQL. Но как мне вернуть выбранные записи в мой JavaScript для обновления страницы. Я не могу понять это.

Сначала мой синхронный XMLhttpRequest:

function retrieveRowsDB()
{
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari

     xmlhttp=new XMLHttpRequest();

  }
  else
  {// code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.open("GET","retrieveRowData.php", false);
  xmlhttp.send(null);

  return xmlhttp.responseText;
}

Тогда мой PHP-скрипт:

<?php

 $con = mysql_connect("localhost","root","*************");
 if (!$con)
 {
   die('Could not connect: ' . mysql_error());
 }

 mysql_select_db("sadb", $con);

 $data="SELECT * FROM users ORDER BY rowdata ASC";

 if (!mysql_query($data,$con))
 {
  die('Error: ' . mysql_error());
 }
 else
 {
  $dbrecords = mysql_query($data,$con); 
 }

 $rowdata = mysql_fetch_array($dbrecords);

 return $rowdata;

        mysql_close($con);

?>

Что мне здесь не хватает? Кто-нибудь получил подсказку?

Ответы [ 3 ]

7 голосов
/ 15 июня 2010

PHP-скрипты не return для JavaScript. Вы должны echo данные (закодированные каким-либо образом, например json_encode ).

На самом деле, если вы делаете какой-либо Ajax, вы сделаете свою жизнь намного проще, используя AJAX библиотеку .

4 голосов
/ 15 июня 2010

Технически пока что не так много в вашем коде - вам просто нужно сделать что-то с ним.

В вашем PHP-файле вместо return $rowdata;, вам нужно каким-то образом вывести его.В настоящее время это просто отправка пустого документа обратно в javascript, поэтому вам нужно echo код.Обычно при использовании нескольких объектов, возвращаемых в javascript, JSON является хорошим форматом.Проверьте json_encode.

С другой стороны, в js, вам нужно будет принять ответ и каким-то образом обновить страницу.В настоящее время вы просто возвращаете его снова.

Я предлагаю вам пройти несколько обучающих программ по ajax и рассмотреть возможность использования такой инфраструктуры, как jQuery , для выполнения тяжелой работы за вас.Возможно, вы также захотите немного почитать эту тему, поскольку у вас есть некоторые фундаментальные заблуждения.

2 голосов
/ 15 июня 2010

Проблема в xmlhttp.responseText, она не существует в то время, попробуйте добавить это прямо перед вашим оператором возврата:

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            doSomething(xmlhttp.responseText);
        }
    }
}

Как правило, вам нужно подождать, пока данные станут доступны, для отправки HTTP-запроса и получения ответа требуется время.

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