如何使用ajax使用POST方法将变量传递给php文件?

时间:2013-09-08 07:38:20

标签: php jquery html ajax

我修改了代码

将prodID POST到ProductsList.php

  // its a dynamically generated drop menu
   while($rowmnu2=mysql_fetch_assoc($resulmnusub2))
    {
       echo '<li><a  id="'.$rowmnu2['liid'].'" href="#" onclick="passto(this.id)">'.$rowmnu2['title'].'</a></li>
';
    }

这是我的ajax功能:

function passto(val){
//window.location.href="ProductsList.php?idd=" + val;
 $.ajax({
    url: 'ProductsList.php', 
    type: "POST",
    data: ({prodID: val}),
    success: function(data){
        //or if the data is JSON
        window.location.href="ProductsList.php";
    }
}); 
}

传递给函数的元素是一个整数

我有

在ProductsList.php中的

<?php 

if(!$_POST['prodID']) die("There is no such product!");

echo $_POST['prodID'];


?>

我得到没有这样的产品!虽然应该有一个INT#

为什么会这样?

任何人都知道吗?所有波纹管建议没有正确回应

3 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
    $("a").click(function(event) {
        myid = $(this).attr('id');

        $.ajax({

        type: "POST",
            url: "ProductsList.php",
            data: {prodID: myid},
        dataType: "json",
            complete:function(){


            window.location("ProductsList.php");
        }

    });
});
});

答案 1 :(得分:1)

如果您想发布id,可以更改:

...onclick="passto(this)"...

...onclick="passto(this.id)"...

答案 2 :(得分:0)

这种行为是正常的,因为您要两次请求ProductsList.php。第一次使用$.ajax的AJAX请求。那时id正确发送。问题是你在使用window.location.href="ProductsList.php";完成AJAX之后再次请求ProductsList.php而不发送任何内容。结果如预期,页面打印There is no such product!

您可以通过以下方式替换window.location.href="ProductsList.php";来解决问题:

$('body').html(data);

或任何其他正确使用返回数据的指令。

您可以使用我编辑的代码或只编辑您的代码:

echo '<li ><a  id="'.$rowmnu2['link'].'" href="#">'.$rowmnu2['title'].'</a></li>';

JS部分:

$('a').click(function() {

    var val = $( this ).attr('id');

    $.ajax({
        type: "POST",
        url: "ProductsList.php",
        data: {prodID:val},
        complete:function(){
            $('body').html(data);  
        } 
   });
});