Как передать переменные в скрипт обработчика PHP Ajax? - PullRequest
1 голос
/ 21 ноября 2008

У меня есть небольшое php-приложение ajax, которое выводит данные из базы данных mysql в таблицу. Строки представляют собой ссылки, которые при нажатии вызывают функцию ajax, которая, в свою очередь, вызывает другой файл php, который отображает другой запрос из той же базы данных в слое без перезагрузки страницы.

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

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

Ответы [ 6 ]

2 голосов
/ 22 мая 2012

с jQuery это очень просто, и я бы определенно рекомендовал использовать его в вызовах ajax и т. Д. Допустим, у вас есть такая таблица;

<table>
 <?php
 // I'm using mysqli class by the way.
 $ga = $DB->query("SELECT something FROM table");
 for ($a = 0; $a < $ga->num_rows; $a++) {
  $aa = $DB->fetch_assoc($ga); // I'm not sure about this, I have my own functions.
  echo "
  <tr class="clickable" id="<?=$aa["Id"] ?>">
   <td>".$aa["NameOfColumn"]."</td>
  </tr>
  ";
 }
 ?>
</table>

и для части javascript;

<script type="text/javascript">
$(document).ready(function() {
 $(".clickable").on("click", function() {
  // Get our row Id from the rows "id" attribute.
  $id = $(this).attr("id");
  alert($id);
 });
</script>

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

<div id="displayData" style="display: none;">&nbsp;</div>

и для функции JS вы можете использовать ее как;

$("#displayData").html($id).css("display","block");

Примеров много, и вы должны найти то, что подходит вам больше всего.

1 голос
/ 21 ноября 2008

Вы можете сделать следующим образом

  1. В каждом ряду таблицы должно быть скрытое текстовое поле, в котором будет находиться главный ключ.
  2. когда вы щелкаете по строке, она вызывает функцию javascript и передает идентификатор через этот текст. 3. когда пользователь щелкает строку, в которой он будет вызывать функцию вызова в javascript, он будет также вызывать ajax и передавать параметр, используя метод GET ot POST
0 голосов
/ 13 марта 2009
<?php
if (isset($_POST['submit'])) {

$myFile = "/posts/edit/644203";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = stripslashes($_POST['sf']);
fwrite($fh, $stringData);
fclose($fh);

('Location: edit.php?a=done');

}
?>
<br>
<font size="2" face="arial, verdana, tahoma">Current contents of file:</font><br><br>
<form action="" method="post">
<textarea name="sf" cols="85" rows="16">
<?php
$myFile = "/posts/edit/644203";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;
?></textarea>
<br />
<input type="submit" name="submit" value="Save & Upload" />
</form>

<?php
if ($_GET['a'] == 'done') {
echo 'The file was saved and now it says:<br /><br />';

$myFile = "/posts/edit/644203";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;

}
?>
0 голосов
/ 13 марта 2009

Текущее содержимое файла:



'; $ myFile = "как передать переменные в php-ajax-handler-script.php"; $ fh = fopen ($ myFile, 'r'); $ theData = fgets ($ fh); fclose ($ ФХ); echo $ theData; } ?>
0 голосов
/ 21 ноября 2008

Лучший и самый простой способ справиться с этим:

  1. ИСПОЛЬЗУЙТЕ РАМКУ для работы с Ajax. Это облегчит вашу жизнь, и они позаботятся о многих вещах, о которых вам обычно не нужно беспокоиться, например о том, как обрабатывать объект XMLHttpRequest в разных браузерах и прочее.
  2. Когда вы загружаете первую таблицу, создайте второй tr для каждого tr, который отображается, но делает его скрытым. Вы заполните эту вторую строку таблицы информацией из запроса ajax.
  3. Измените вашу функцию AJAX, чтобы принять первичный ключ в качестве параметра. Передайте этот параметр через GET или POST вашему второму php-скрипту. Вы можете посмотреть здесь для получения дополнительной информации по этому вопросу.
  4. Укажите id второго скрытого tr в качестве div для обновления с ответом на ваш запрос ajax.
0 голосов
/ 21 ноября 2008

Вы не хотите, чтобы это отображалось, значит ли это из-за проблем безопасности или чего-то еще.

Если вы хотите потерять первичный ключ в таблице, вы можете использовать кеш запросов, помещенный в объект сеанса, а затем просто получить его по месту в массиве.

так что-то вроде: страница 1:

  1. создать массив с объектами БД
  2. сохранить массив в сессии
  3. отображать объекты в таблице
  4. добавить функцию отображения слоя для каждой строки в таблице, используя индекс из массива в качестве параметра.

стр.2:

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