在Bootstrap选项卡中不使用href传递PHP变量

时间:2014-06-21 18:32:17

标签: php jquery ajax twitter-bootstrap

我正在尝试使用引导选项卡在同一PHP页面上使用<a>标记和data属性发送PHP变量:

HTML(Bootstrap选项卡选项):

<a style='padding:20px;' href='#tab_e' data-page='$page' class='passrss' data-rssid='$rssid' data-toggle='tab'>Test</a>

PHP(存储在#tab_e标签中):

$rsspassedid = GET $rssid from the a tag (data-rssid)

我想在点击时获取存储在data-rssid中的值,并将其传递给同一PHP文件中的变量,以便在使用#tab_e打开选项卡时,mySQL语句将运行基于$ rssid中提供的值并显示查询结果。我不确定是否需要任何jQuery / AJAX,但是可以将数据存储在PHP中<a>标签的data属性中吗?

更新

我已经尝试将变量存储在分页链接中,但仍然没有运气,这是我创建的XHR对象:

<script>
$(document).ready(function () {

    $('.passrss').click(function () {
        $('span.pass-tabe').load('tabe.php?rssid=' + $(this).data('rssid') + '&page=' + $(this).data('page'));
    });

    }); 
</script>

Tabe将存储在a标签中的变量传递给单独的php文件(tabe.php),然后使用<span class="pass-tabe"></span>加载到浏览器中,就像分页一样 - 链接存储在tabe.php中文件,但他们返回主要的php文件,因此分页无法工作,例如

originalphpfile.php?page=$page&rssid=$rssidpassed&pageurl=$x#tab_e

注意:$rssidpassed存储在tabe.php中,它来自XHR对象,例如

$_GET['rssid']

更新2

我已经添加了下面的分页代码,我现在遇到的问题存放在tabe.php中:

$perpage = 10;
$pageurl = (isset($_GET['pageurl'])) ? (int)$_GET['pageurl'] : 1;
$start = ($pageurl - 1) * $perpage;

$pagequery = mysql_query("SELECT COUNT('topic_id') FROM topic WHERE cat_id='$page' AND topic.users_id = '$rssid'");
$pagination = ceil(mysql_result($pagequery, 0) / $perpage);

//query goes here

//pagination numbers
if($pagination >= 1){
    echo "<div style='text-align:center;'><ul class='pagination'>";
    for($x=1; $x<=$pagination; $x++){
    echo ($x == $pageurl) ? "<li class='active'><a href='originalphpfile.php?page=$page&pageurl=$x#tab_e'>$x</a></li>":"<li><a href='originalphpfile.php?page=$page&pageurl=$x#tab_e'>$x</a></li>"; 
    }
    echo "</ul></div>";
}

当我点击分页链接时,它不会加载第二,第三等结果集,因为它返回到originalphpfile.php

有没有解决这个问题?

2 个答案:

答案 0 :(得分:0)

我会继续把它变成一个答案,因为我们的评论块越来越长了。

在PHP模板中,要将PHP转换为有用的东西,您需要执行以下操作:

// file1.php
// notice <?= ?> is quick echo, the same as <? echo $rssid; ?>
<a style='padding:20px;' href='#tab_e' data-rssid='<?= $rssid ?>' data-toggle='tab'>Test</a>

根据帖子,在你的javascript中,你认为获得$ rssid的原因是因为你没有回应这个价值。

// file2.php
$page = array_key_exists($_GET,'page') && is_numeric( $_GET['page'] ) ? $_GET['page'] : 1
// do query i.e select * from x offset $page * $per_page limit $per_page

// do stuff with your pagination in a loop defining an index $number
<a class="pagination" onclick="getPage(<?= $number ?>)"><?= $number; ?></a>

然后在jquery:

// Call this when they click the tab
var id;
function setId(id){
   id = id;
   getPage(1);
}

// call this when they click the pagination
function getPage(number){
   $('span.pass-tabe').load('tabe.php?rssid=' + $id + '&page=' +number )
}

请按照示例代码,似乎您正在做一些复杂的事情,并且很难准确掌握您的确切用例。

答案 1 :(得分:0)

问题已解决,我将AJAX反映到tabe php文件中并更改了分页HTML链接:

tabe.php分页链接:

<a href='#tab_e' class='passrssurl' data-rssid='$rsspassedid' data-url='$x' data-page='$page' data-toggle='tab'>

tabe.php echo AJAX:

echo "<script>
$(document).ready(function () {
    $('.passrssurl').click(function () {
    $('span.pass-tabe').load('tabe.php?rssid=' + $(this).data('rssid') + '&page=' + $(this).data('page') + '&pageurl=' + $(this).data('url'));
    });

}); 
</script>";