【发布时间】: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