0

コードを修正しました

prodID を ProductsList.php に POST する

  // 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 # があるはずですが

何故ですか ?

誰でも知っていますか?以下のすべての提案が正しく応答していません

4

3 に答える 3

0

ProductsList.php を 2 回要求しているため、この動作は正常です。を使用した 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);  
        } 
   });
});
于 2013-09-08T07:52:07.120 に答える