【发布时间】:2014-08-12 05:39:25
【问题描述】:
我正在尝试使用 <a> 标记和使用 Bootstrap 选项卡在同一 PHP 页面上的 data 属性发送 PHP 变量:
HTML(引导选项卡选项):
<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 存储在从 XHR 对象获取的 tabe.php 中,例如
$_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
有什么解决办法吗?
【问题讨论】:
-
您需要使用 Ajax 才能实现此功能。任何点击事件都表明您已将 HTML/CSS/JS 发送到客户端。因为客户端需要再次与您的服务器通信以获取 MySQL 查询的结果,所以您需要一个新的请求才能这样做。本质上,没有直接的方法将 php 传递给 mysql 查询。您可以将其呈现为属性值,使用 jQuery 检索它,然后将其发送回服务器。
-
我不太清楚该怎么做,我通过将数据属性发送到外部 PHP 文件并将其加载回#tab_e 来创建一个 XHR 对象。虽然这可行,但它不适用于分页,因为选项卡式内容正在发送到外部 PHP 文件。我不确定是否有办法将 rssid 的数据属性存储在 AJAX 中并将其作为要存储在同一个 PHP 文件中的值返回
-
您需要了解请求/响应周期。大多数网站都是以这种方式设置的,因此没有状态。状态是“昂贵的”。客户端需要存储此信息并格式化请求,以便 PHP 读取并响应。如果您想要分页,请将这些变量存储在客户端上,并将它们与构建 PHP 响应的请求一起发送。
-
这很难读,你能用代码块中的那个来更新你的原始帖子吗?更新:您还可以包含您的 MySQL 查询吗?更新 2:请将您的 jQuery、PHP 和 MySQL 放在您原始帖子中的 ### Update ### 块中,以便我可以帮助您。
-
我看到了
$(this).data('page'),但我在任何地方都没有看到... data-page="??"...。data-page属性位于哪个元素上?
标签: php jquery ajax twitter-bootstrap