Как сделать так, чтобы гиперссылка передавала 2 значения массива другому сценарию и печатала страницу этого сценария? - PullRequest
1 голос
/ 31 января 2010

У меня есть список имен (1-15 строк), которые я отображаю из массива. Я хочу, чтобы администратор выбрал правильное имя из списка, нажав на гипертекст под названием «ссылка». Идентификатор записи находится в массиве, и я хочу, чтобы он передавался вызываемому скрипту.

Я нашел этот javascript, который работает, за исключением того, что я хочу напечатать страницу linkur.php (с ее информационными сообщениями). Я знаю, что это не печатает из-за void (0), но не могу определить правильный метод, необходимый.

<a href="javascript:void(0);" onclick='$.get("linkur.php",{ rid: "<?php echo $k['id']; ?>", uid: "<?php echo $uid; ?>", } ,function(data){ $("#link<?php echo $k['id']; ?>").html(data); });'>Link</a>

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

Спасибо за любые идеи.

Карл

Ответы [ 2 ]

1 голос
/ 31 января 2010

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

<a href="linkur.php?rid=<?php print $rid; ?>&uid=<?php print $uid; ?>">Link</a>

Это будет отображаться на странице с твердыми значениями, а не с переменными:

<a href="linkur.php?rid=123&uid=281">Link</a>

После того, как вы щелкнете по ссылке, вы передадите rid = 123 и uid = 281 конечному сценарию, увидев его вывод на экране.

Правильно добавив асинхронность

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

<a href="linkur.php?rid=123&uid=281" class="loadme">Link</a>

Теперь с помощью jQuery мы можем перехватить эти запросы и загрузить их HTML в другом месте:

$(function(){
  // Intercept the click event of our links
  $(".loadme").click(function(e){
    // Prevent them from leaving the page
    e.preventDefault();
    // Fire off a request for their content
    $.get($(this).attr("href"), function(data) {
      // Load their content into a container on our page
      $("#content-viewer").html(data);
    }, "html");
  });
});

Обратите внимание, что я ссылался на #content-viewer. Вы должны иметь это где-то на своей странице:

<div id="content-viewer">I will show the content .loadme links!</div>
0 голосов
/ 31 января 2010

Ваш подход немного хакерский, если не сказать больше. Теперь вам нужно иметь javascript для каждой ссылки, тогда как правильный способ сделать это - связать функции отдельно. Вместо этого вы можете сделать что-то вроде этого:

<a href="#" class="some_links" rel="<?php echo $k['id']; ?>" href="linkur.php?rid=<?php echo $k['id']; ?>&uid=<?php echo $uid; ?>">Link</a>

Что будет выводить в браузер как:

<a href="#" class="some_links" rel="123" href="linkur.php?rid=123&uid=456">Link</a>

И в отдельном файле Javascript:

$('a.some_links').click(function() {
    $("#link"+$(this).attr('rel')).load($(this).attr('href'));
    return false;
});

Если я правильно понял ваш код, это будет делать то же самое & ndash; загрузка содержимого из linkur.php с переданными переменными в элемент #link+rid.

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