Как получить HTML и переменные с помощью jQuery / Ajax и PHP - PullRequest
2 голосов
/ 14 декабря 2009

У меня есть HTML-форма, которая использует выборки из выпадающего списка для заполнения таблицы mySQL, но jQuery / AJAX вызывает внешний php-файл для обновления отображения введенных строк под исходной формой.

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

Поэтому мой вопрос: есть ли способ получить переменные сеанса (или любые другие переменные) обратно из моего внешнего php-файла, а также HTML, который я добавляю на отображаемую страницу?

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

$.ajax({
type: "POST",
url: "ajaxInsertOrderLine.php",
data: dataString,
cache: false,
success: function(html){
    $("#orderItems").append(html);
    document.getElementById('inputStockNo').value='';
    document.getElementById('qty').value='';
    document.getElementById('totalAmount').value="<?php echo $_SESSION["totalValue"]; ?>";
}});

где «ajaxInsertOrderLine.php» - внешний файл, «inputStockNo» и «qty» - это две переменные формы, отправляемые в сценарий и обнуляемые после успешной вставки.

Ответы [ 4 ]

4 голосов
/ 14 декабря 2009

Вы можете передать множество значений обратно в ваш скрипт jQuery в виде массива. Например, я мог бы передать следующее:

session_start(); // necessary for getting/setting SESSION data
print json_encode(array(
  "username" => $_SESSION["username"],
  "msgCount" => 0,
  "userHTML" => "<p>There are no new messages</p>";
));

Затем из вашего кода jQuery вы будете использовать метод поиска данных JSON:

$.post("page.php", {}, function(results) {
  alert(results.username + " has " + results.msgCount + " messages.");
  $("messages").append(results.userHTML);
}, "json");
2 голосов
/ 14 декабря 2009

Почему бы просто не отказаться от идеи переменной сеанса - выполнить расчет общей стоимости заказа на сервере на странице php и просто отправить обратно значение вместе с элементом, который вы добавляете в список?

2 голосов
/ 14 декабря 2009

вы можете вернуть объект Json (возможно, используя getJSON ), содержащий две различные переменные, которые вы хотите получить, одна из которых представляет собой HTML-код для добавления, а другая - общее значение заказа.

0 голосов
/ 14 декабря 2009

Я нашел скрипт здесь: Переменные сеанса Javascript , который делает то, что я хочу, и может помочь любому, кто хочет использовать переменные сеанса с AJAX.

...