通过JavaScript将参数发送到PHP函数 - javascript

我有一个这样的PHP脚本:

<?php
    $menuItemList = getSubPkgCategForDDList(echo "<script>showSubCatForMenuItem();</script>");
    if(isset($menuItemList)){
        foreach($menuItemList as $u){
            ?>
            <p><span contenteditable="true"><?php echo $u->name ?></span><button type="button" class="btn btn-danger btn-xs" onclick="deleteCategory(<?php echo $u->pkg_cat_ddlist_id ?>)">Delete</button>
            <button type="button" class="btn btn-success btn-xs" onclick="editCategory(<?php echo $u->pkg_cat_ddlist_id ?>,<?php echo "'".$u->name."'" ?>)">Save</button></p>
            <?php
        }
    }
?>

函数getSubPkgCategForDDList必须生成html代码,因此它取决于发送给此函数的参数。
我从这样的js函数showSubCatForMenuItem()获取此参数:

function showSubCatForMenuItem(){
        console.log($('#menuItem').val());
        return $('#menuItem').val();
    }

此函数从以下下拉列表中获取数据:

<select id="menuItem" onchange="showSubCatForMenuItem()">
    <?php
        $itemList = getPackCategoriesForAsideMenu();
        if(isset($itemList)){
            foreach($itemList as $u){
                ?>
                    <option value="<?php echo $u->pkg_cat_ddlist_id ?>"><?php echo $u->name ?></option>
                    <?php
                }
            }
    ?>
  </select>

当我加载页面并从下拉列表中选择项目时,如何正确进行参数传递?对不起我的英语不好。

参考方案

在这种情况下,您应该利用$_SESSION的优势。现在打印出下拉列表:

<select id="menuItem">
<?php
    $itemList = getPackCategoriesForAsideMenu();
    if(isset($itemList)){
        foreach($itemList as $u){
            echo'<option value="'.$u->pkg_cat_ddlist_id.'">'.$u->name.'</option>';
        }
    }
?>
</select>

编写JS脚本:

$("#menuItem").live('change',function(){
     var val = $(this).val();
     $.post('change.php',{data:val},function(){
     // Do some 
     });
});

并创建一个名为change.php的php文件:

<?php
session_start();
if(!empty($_POST['data'])){
     $_SESSION['menu_sltd'] = (int) $_POST['data']; // It makes sure that the data sent is integer / number
}
?>

现在,将主脚本更改为:

<?php
session_start();
$menu_sltd = (!empty($_SESSION['menu_sltd']) ? $_SESSION['menu_sltd'] : 'default id'); // Default id is the default menu id if it's blank
$menuItemList = getSubPkgCategForDDList($_SESSION['menu_sltd']);
if(isset($menuItemList)){
    foreach($menuItemList as $u){
        echo'
        <p>
          <span contenteditable="true">'.$u->name.'</span>
          <button type="button" class="btn btn-danger btn-xs" onclick="deleteCategory('.$u->pkg_cat_ddlist_id.')">Delete</button>
          <button type="button" class="btn btn-success btn-xs" onclick="editCategory('.$u->pkg_cat_ddlist_id.',\''.$u->name.'\')">Save</button>
        </p>';
    }
}
?>

祝您好运,很高兴为您提供帮助。不要放弃

使用php重新加载内容 - javascript

在对网站进行编程时,我以前使用过此代码,它可以完美工作,但是现在当我想使用一些Flash部件时,每次单击链接时,它都会重新加载所有网站。源代码: <!DOCTYPE html> <html> <head> <title>Hot King Staff</title> <meta charset=…

用jQuery填充模式形式 - javascript

我正在将订单表从数据库绘制到datatables(jquery插件)中。我要在每笔最后一笔交易或每笔交易中增加付款。问题是,如何获取单击添加付款按钮以添加付款的行的订单ID。其次,当点击addpayment时,它会弹出一个带有字段或订单号的模态表单。我想用在td中找到的订单ID填充该字段,并使其不可编辑或隐藏,但在提交模态表单时将其发布到服务器。表格和模式表…

保留文本区域的数据或值,然后选择输入 - javascript

通过$ _POST提交表单时,输入文件值仍然保留。像这样: if($_POST){ $error = false; if(!$post['price']){ $error = true; $error_note['price'] = "*Should not be empty"; } if($err…

带有AJAX和DOM处理API的下拉菜单 - javascript

我从API获取数据,但未在我的下拉菜单中显示。如果我用?act=showprovince回显,结果就在那里。example.html<head> <link rel="stylesheet" type="text/css" href="css/normalize.css"> …

尽管刷新,jQuery格式仍未应用于Ajax数据 - javascript

我正在通过GET响应消息从服务器(php文件)的可折叠内部加载列表视图。但是,尽管刷新了jQuery元素,但jQuery格式并未应用于添加的HTML。我的页面在这里:http://i.cs.hku.hk/~hsbashir/Project_Work/events/events.htmlHTML代码(仅相关代码)<script> lastRecor…