【问题标题】:How to pass id on pagination link button on same php page without link change?如何在同一php页面上的分页链接按钮上传递id而不更改链接?
【发布时间】:2020-05-18 22:46:35
【问题描述】:

我想在不刷新和链接更改的情况下在 php 上传递值:

$pagination .= '<li class="page-item"><a class="page-link" href="/demo-project/book?page='.$i.'">'.$i.'</a></li>';

上面的代码创建了我不想要的新网址,如下所示: demo-project/book?page=2

我想要当我点击链接时,只有页面 id 会进入 php,例如:

$pagination .= '<li class="page-item"><a class="page-link" data-id="2">'.$i.'</a></li>';

我试过了:

        $pagination .= '<li class="page-item"><button class="page-link" data-id="'.$i.'">'.$i.'</button></li>';

然后是 index.php

if (isset($_POST['data-id'])) {
$dataid = sanitize($_POST['data-id']);
var_dump($dataid);
}



<script>
$('button').click(function addseries(e){
var i = $(e.currentTarget).attr('data-id');
$.ajax({
  type: "POST",
 url: 'index.php',
 data: i,
 success: function(data) {
 console.log(data);
  }
});

</script>

我试过了,但没有任何效果。

我想发送id然后想在php中获取值

但我不想在 url 中创建带有页码的链接 href,然后在 php 中获取页码。

欢迎任何想法或建议。

【问题讨论】:

  • 首先将 $.ajax 选项中的 data: i 更改为 data: { id: i },并将 PHP 更改为 if (isset($_POST['id'])) { $dataid = sanitize($_POST['id']); var_dump($dataid); } 因为 1) 字段名称中的连字符,我不确定如果这可行,那么最好保持简单,并且 2)您没有在 AJAX 请求中命名数据变量,它本身只是一个数字。所以 PHP 不知道如何将它与命名的 POST 变量匹配。您必须使用您希望 PHP 匹配的名称发送它。
  • 另外,$('button').click(function addseries(e){ var i = $(e.currentTarget).attr('data-id'); 可以简化为 $('button').click(function(e){ var i = $(this).attr('data-id');
  • P.S.将 AJAX 发布回 index.php 是个坏主意,因为它可能会返回各种其他内容,以及您想从 AJAX 中返回的任何内容。最好将 AJAX 发送到仅处理该特定请求的单独脚本。
  • @ADyson 怎么样?最好将 AJAX 发送到仅处理该特定请求的单独脚本。我需要创建新的 php 文件来获取 POST 值?
  • 我认为这样更好。这样它就不会与页面的主要 HTML 混淆。

标签: javascript php ajax


【解决方案1】:

您必须将请求中的参数命名为 data : {"id":id}

$('.page-item').on("click",".page-link",function(){

  var i = $(this).attr('data-id');

  alert(i);
$.ajax({
  type: "POST",
 	url: 'index.php',
 	data: {"data-id":i},
 	success: function(data){
 		console.log(data);
  }
 });

  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<li class="page-item"><button class="page-link" data-id="5">5</button></li>
<li class="page-item"><button class="page-link" data-id="6">6</button></li>
<li class="page-item"><button class="page-link" data-id="7">7</button></li>

【讨论】:

  • 我已经修改了我的回复。您可以按照以下方式打印页面:&lt;li class="page-item"&gt;&lt;button class="page-link" data-id="YOUR_DATA_ID"&gt;5&lt;/button&gt;&lt;/li&gt; 然后创建如上所示的事件
猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 2012-05-18
相关资源
最近更新 更多