我有以下代码:
<ul>
<li>
<a href="index.php?page=quiz" class="cat" >
<h3>Category 1</h3>
<p>(explain here)</p>
</a>
</li>
<li>
<a href="index.php?page=quiz" class="cat" >
<h3>Category 2</h3>
<p>(explain here)</p>
</a>
</li>
</ul>
我需要的是将类别编号发送到页面index.php?page=quiz
通过$_POST
或其他任何方式
不通过此$_REQUEST
的{{1}}发送。{。}
OR 根据当前点击的链接将类别编号值分配给index.php?page=quiz&cat=1
变量
获取目标页面$_SESSION
的值。
我已经尝试过这个解决方案:
,通过
index.php?page=quiz
javascript
发送过程和var num=1; /*or put the current clicked category number */
$.ajax({
url: 'index.php?page=quiz',
type: 'post',
dataType: 'json',
data: {
category_no: num,
}
})
的值似乎有问题
没有发送到目的地,我们仍然在当前页面page=quiz
。
您有什么有用的想法吗?
注意:我的问题是没有从当前点击(按钮/链接)到page=home
获取类别ID,而是通过上述任何方式将其发送到目标网页。
答案 0 :(得分:1)
解释解决方案:
问题是我的函数中没有exit()
和json_encode()
结果,无法在页面index.php
代码中应用,这意味着
整个功能必须移动到另一个文件
问题解决如下:
的 my page:
强>
<ul>
<li>
<a href="" data-no="1" class="cat" >
<h3>Category 1</h3>
<p>(explain here)</p>
</a>
</li>
<li>
<a href="" data-no="2" class="cat" >
<h3>Category 2</h3>
<p>(explain here)</p>
</a>
</li>
</ul>
<强> JavaScript:
强>
$('.cat').on('click', function (e) {
// Prevent default action of link click
e.preventDefault();
var cat = $(this).data('no');
var curr='set_var.php';
$.ajax({
url: curr,
type: 'POST',
dataType: 'json',
data: {
category: cat
}
}).done(function(res) {
if (res.valid) {
document.location.href = 'index.php?page=quiz';
}
});
});
<强> set_var.php :
强>
<?php
session_start();
if(isset($_POST['category'])){
$_SESSION['cat']=$_POST['category'];
$result['valid'] = TRUE;
}
echo json_encode($result);
exit();
?>
感谢您的所有答案
答案 1 :(得分:0)
将类别ID添加为数据属性,如下所示:
<ul>
<li>
<a data-category-id="1" href="index.php?page=quiz" class="cat" >
<h3>Category 1</h3>
<p>(explain here)</p>
</a>
</li>
<li>
<a data-category-id="2" href="index.php?page=quiz" class="cat" >
<h3>Category 2</h3>
<p>(explain here)</p>
</a>
</li>
</ul>
然后像这样处理点击事件以进行ajax调用(动态获取点击的类别链接&#39的网址及其ID):
// When page loads
$(document).ready(function()
{
// Handle category click event
$('a.cat').click(function(e)
{
// Prevent default action of link click
e.preventDefault();
// Get the url
var categoryUrl = $(this).prop('href');
// Get the category id
var categoryId = $(this).data('category-id');
// Make ajax call
$.ajax({
url: categoryUrl,
type: 'post',
dataType: 'json',
data: {
category_no: categoryId
}
})
.done(function() {
location.href = categoryUrl;
});
})
});
这样,当您点击链接时(转到网址的默认操作不会运行)。代替; ajax POST请求首先点击url(在你的情况下总是index.php?page=quiz
),当请求完成时,你被重定向到那个页面。
答案 2 :(得分:0)
如果num是您点击的类别,我认为它应该像:
var num=1;
$.ajax({
url: 'index.php?page=quiz',
type: 'post',
dataType: 'json',
data: {
num,
}
});
并在您的指数.php&#39;
中session_start();
$_SESSION['catID'] = $_POST['num'];
如果这不是&#39;工作,看看你的index.php会很有帮助。
编辑:让我们尝试另一方......只是为了测试。
创建一个名为getCatID.php的新php并将AJAX更改为:
var num=1;
$.ajax({
url: 'getCatID.php',
type: 'post',
dataType: 'json',
data: {
num,
}
});
window.location = "index.php?page=quiz"
在getCatID.php中:
<?php
session_start();
$_SESSION['catID'] = $_POST['num'];
?>
在你的index.php中尝试
echo $_SESSION['catID'];
PS:您需要以某种方式触发Ajax调用