我修改了代码
将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#
为什么会这样?
任何人都知道吗?所有波纹管建议没有正确回应
答案 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);
}
});
});