Js:将按钮 ID 传递到同一页面


Js: pass button id to the same page

<script type="text/javascript">
    $(document).ready(function () {
        $(".Categories").click(function () {
            var catId = $(this).attr('id');
            catId = String(catId);
            jQuery.ajax({
                url: "index.php",
                data: { catId },
                type: "POST",
                success: function (data) {
                    $("#categoryField").html(data);
                }
            });
        });
    });
</script>

我需要将单击的按钮id传递到同一index.php页面,而无需刷新页面并使用该id值。我的代码是错误的,因为页面是第二次呈现的。

这是我的 php 代码:

<?php
$category=$user_home->runQuery("SELECT DISTINCT category FROM products");
$category->execute();
$categoryArray=$category->fetchAll(PDO::FETCH_ASSOC);
  foreach($categoryArray as $listID){
?>
<input type="button" id="<?php echo $listID['category']?>" class="Categories" value="<?php echo $listID["category"]?>"/><br>
<?
}
?>

在按钮click事件处理程序中调用preventDefault方法以防止默认按钮行为(">页面第二次呈现"(:

...
$(".Categories").click(function (e) {
    e.preventDefault();
...

代码中存在语法错误

$(document).ready(function () {
    $(".Categories").click(function () {
        var catId = $(this).attr('id');
        catId = String(catId);
        jQuery.ajax({
            url: "index.php",
            data: { catId: catId },
            type: "POST",
            success: function (data) {
                $("#categoryField").html(data);
            }
        });
    });
});

您必须以有效的文本对象格式传递数据。{"property_name": "property_value"}.

更改: data: { catId }

to data: { "catId": catId }

对于服务器端:

<?
if (isset($_POST['catId'])) {
    /* YOUR CODE FOR CATEGORY */
    $catId = intval($_POST['catId']);
    echo 'SUCCESS';
    exit(0);
}
// YOU OTHER PHP CODE 
?>
我想

我需要将我的变量发布到另一个页面,然后将其返回。我不知道如何在同一页面中执行此操作。这个带有 exit(0) 的变体是不好的,因为 exit(0) 之后if语句中的所有变量都将被删除。

<?
if (isset($_POST['catId'])) {
    /* YOUR CODE FOR CATEGORY */
    $catId = intval($_POST['catId']);
    echo 'SUCCESS';
    exit(0);
}
// YOU OTHER PHP CODE 
?>