使用ajax将变量传递给php文件无效

时间:2018-04-04 04:28:09

标签: php jquery ajax

我正在尝试传递一个变量,当一个类(“女性”)使用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文件

4 个答案:

答案 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');
 })