如何让超链接将2个数组值传递给另一个脚本并打印该脚本的页面?

时间:2010-01-31 17:24:18

标签: php javascript jquery html

我有一个从数组中显示的名称列表(1-15行)。我希望管理员通过单击名为“链接”的超文本从列表中选择正确的名称。记录ID在数组中,我希望传递给被调用的脚本。

我发现这个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 个答案:

答案 0 :(得分:1)

我对你的要求感到有点困惑。您没有提到需要异步请求,但这正是您的代码使用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 传递给结束脚本,并在屏幕上看到它的输出。

正确添加一些Asynch'ness

如果需要异步加载此数据,则代码中只会添加少量内容。保留我们刚才引用的原始链接,但是为其添加一个类:

<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>

答案 1 :(得分:0)

至少可以说,你的方法有点笨拙。现在你需要在每个链接上都有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;
});

如果我正确理解你的代码,这将完全相同 - 将linkur.php中的内容与传递的变量加载到#link+rid元素。