我正在尝试传递一个变量,当一个类(“女性”)使用ajax点击到一个php文件但它无法正常工作时。这是我的代码
jquery的:
$('.women').click(function(){
var test="hello";
$.ajax({
type: "POST",
url: 'data.php',
data: {'variable':test},
success:function(data){
console.log(data);
},
});
$(".women").attr('href','data.php');
})
php代码:
if (isset($_POST['variable']))
{
echo($_POST['variable']);
}
else
{
echo ("failure");
}
html:
<li class="nav-item mr-auto ml-auto" data-target="#collapsewomen">
<a class="nav-link active women productlink" href="#">Women</a>
</li>
在控制台中,我可以看到“hello”,这意味着ajax正在工作,但一旦指向php页面,我就会“失败”。我无法将测试变量传递给php文件
答案 0 :(得分:2)
ajax的目的是在不刷新页面的情况下将数据发送到URL。如果要重定向页面,则不能使用ajax
。
执行ajax
调用不会自动保存发送的数据,如果您重定向到该页面,则无法使用数据。
使用GET
$('.women').click(function(){
var test="hello";
window.location.href = "data.php?variable=" + test;
})
在你的php上
if (isset($_GET['variable']))
{
echo($_GET['variable']);
}
else
{
echo ("failure");
}
使用POST ,一个选项是使用隐藏的表单,如:
在您的主页上:
$('.women').click(function(){
var test = "hello";
$('[name="variable"]').val(test); //Update the value of hidden input
$("#toPost").submit(); //Submit the form
})
HTML:
<a class="nav-link active women productlink" href="#">Women</a>
<form id="toPost" action="data.php" method="POST">
<input type="hidden" name="variable" value="">
</form>
在你的data.php上:
<?php
if (isset($_POST['variable']))
{
echo($_POST['variable']);
}
else
{
echo ("failure");
}
?>
答案 1 :(得分:1)
我认为应该是数据:{variable:test}而不是数据:{&#39;变量&#39;:test}
答案 2 :(得分:0)
将此添加到您的前端文件
<input type="button" class="women" value="Button" name="ash_b" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js" >
$('.women').click(function(){
var test="hello";
$.ajax({
type: "POST",
url: 'data.php',
data: {'variable':test},
success:function(data){
console.log(data);
},
});
$(".women").attr('href','data.php');
})
</script>
在您的data.php中使用以下代码
if (isset($_POST['variable']))
{
echo($_POST['variable']);
}
else
{
echo ("failure");
}
它对我来说非常合适,如果这不起作用则显示你的两个文件
答案 3 :(得分:0)
请尝试以下代码:
$('.women').click(function(){
var test="hello";
var datastr = 'test='+test;
$.ajax({
type: "POST",
url: 'data.php',
data: datastr,
success:function(data){
console.log(data);
},
});
$(".women").attr('href','data.php');
})