PHP, JavaScript и MySQL: обновление и передача переменных - PullRequest
0 голосов
/ 09 апреля 2011

Я пытаюсь увеличить число и обновить базу данных, а затем отобразить номер без обновления страницы.Мне просто интересно, есть ли способ читать / обновлять MySQL, используя JavaScript?

Я попытался поискать, и кажется, что вам нужно вызвать другую программу, которая изменяет значения для вас.Прямо сейчас у меня есть

<?php
require ("connect.php");

echo "connected!<br>";

$extract = mysql_query("SELECT * FROM articles")or die ("Not working");

//$numrows = mysql_num_row($extract);

while ($row = mysql_fetch_assoc($extract)) {

    $id = $row['id'];
    $article = $row['article'];
    $thumbsup= $row['thumbs_up'];
    $thumbsdown = $row['thumbs_down'];
    $date = $row['date_time'];
    $username = $row['username'];
    mysql_query("UPDATE articles SET thumbsup = 1");
}
?>

Так что мне интересно, как только эта страница обновит базу данных, как вы получите обновленное значение в функцию JavaScript?Сейчас я просто читаю его из файла

xmlhttp.open("GET", "http://localhost/ajax/folder5/includes/a.txt", true);

Большое спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

Поскольку у вас уже есть серверный скрипт, который извлекает данные, все, что вам нужно сделать, это вернуть их в ответ на ваш XMLHttpRequest и обработать его с помощью функции callback.Предполагая, что вы хотите вернуть $id, $article, $thumbsup ..etc, вы можете поместить его в массив и закодировать, как предполагается, вы можете использовать json_encode().В вашем PHP-скрипте вы можете сделать что-то вроде:

$Response = array(
     'Id' => $id,
     'Article' => $article',
     'ThumbsUp' => $thumbsup
)

echo json_encode($Response);
exit;

И в вашем Javascript вам может понадобиться добавить обработчик ответа, например:

xmlHttp.onreadystatechange = function() {

 if (syndLinkRequest.readyState != 4)
    return;

  var result = xmlHttp.responseText;

  /* if you've returned javascript instead of xml or text, 
    you can eval(result) to access the javascript variables returned.
  */

  // do your thing
  }

Если вам нужно изменитьЕсли вы запрашиваете данные, а не используете GET для текстового файла, в этом случае вам может потребоваться запросить непосредственно к сценарию PHP и вернуть результат:

xmlhttp.open("GET", "/ajax/update.php", true); // this will return the response

По сути, это все, что вам нужно.Для более краткого примера вы можете сослаться на здесь .

Также проверьте ajax-функции jQuery, поскольку они могут вам сильно помочь.

** EDIT **

Добавлена ​​дополнительная информация.Поскольку мы возвращаем результат, который представляет собой JSON (с помощью json_encode), вам нужно добавить заголовок для типа контента, добавьте его в верхней части вашего скрипта чуть ниже <?php part:

header('Content-type: application/json');

И исходя из приведенного выше примера, предполагая, что мы имеем это в качестве ответа:

$Response = array( 'Id' => $id,  'Article' => $article,'ThumbsUp' => $thumbsup);
echo json_encode($Response);
exit;

Как только вы получите это в вашей функции callback, это будет преобразовано во что-то вроде (с примерами значений):

{"Id":1,"Article":20,"ThumbsUp":30}

, который присваивается переменной результата:

var result = xmlHttp.responseText;

Чтобы быть уверенным, что мы получим оценку ответа, мы будем использовать eval() в строке результата, чтобы вы могли получить значенияоб этом путем доступа к свойствам.Возьмем для примера:

var result = eval(xmlHttp.responseText);

Как только это будет сделано, вы можете получить доступ к свойствам из переменной результата, например result.ThumbsUp, которая дает вам 30 на основе примера.Затем вы можете присвоить это значение так, как вам нужно: document.getElementById('c').innerHTML = result.ThumbsUp; Надеюсь, это даст вам более ясную идею.

Примечание к использованию eval(), прочитайте this .

1 голос
/ 09 апреля 2011

Вы на правильном пути, используя XMLHttpRequest. По сути, вам просто нужно создать сценарий с нужным вам выводом (вместо получения статического текстового файла).

Хорошим выбором для вывода скрипта PHP AJAX является JSON. Для этого вы можете использовать json_encode. Есть и другие возможности, включая XML.

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