是否可以使用Ajax调用内部函数?

时间:2019-03-25 07:39:25

标签: javascript php jquery ajax

PHP完全陌生,所以对我来说这是一个完整的起点。现在,我想尝试根据先前的下拉列表从1-10动态更新下拉列表。

第一个下拉列表是一个表格选择,允许您选择表格1-35,第二个下拉列表是一个从1-10的座位选择。我希望这样,以便1-10会根据桌子更新,以说明谁已经预订了桌子上的座位。

我已经找到了一种正确填充列表的方法,但是当我尝试在第一次下拉列表更改时对其进行更新时,我遇到了一些问题。

我研究了许多对不同PHP文件的Ajax调用,但是我的代码取决于PHP在index.php文件中的位置以填充下拉列表。我目前有一个函数,该函数在首次加载时会填充列表,并且我对同一文件中的内部函数有一个小的Ajax调用。

这是可以完全正常工作的PHP代码(由于无关紧要,我遗漏了更多的内容)

<?php
    function populateDropdown2(){
        for ($i=1; $i<=10; $i++)
        {
            if ($row[1] == $_POST['TableNum'] && $row[2] == $i)
            {
                $result = $i . ' - ' . $row[0];                              
                break;
            }
        }
?>
<option value="
    <?php echo $result;?>
" 
    <?php if(strlen($result) > 2){echo "Disabled";}?>
>
    <?php echo $result;?>
</option>

这是我尝试进行Ajax调用:

$(document).ready(function(){
        $('#Tabl').change(function(){
            console.log("CLICKED");
            $.ajax({
                url: "index.php",
                type: "post",
                success: function(response){
                    populateDropDown2(response);
                }
            });
        });    
});

我已经阅读了很多有关Ajax的文章,但是是否可以调用同一个文件中存在的函数以及另一个代码块中的函数呢?谢谢。

编辑:我要调用的函数必须处于PHP文件中现在的位置,因为它位于表单的所有其他输入字段的下方

Edit2:我正在从PHP的CSV文件中获取值。

1 个答案:

答案 0 :(得分:0)

PHP和JavaScript(您的AJAX函数)完全分开,您不能直接在JavaScript中调用PHP:

  • PHP:在Web服务器上运行,并通过HTTP返回数据。
  • JavaScript:在客户端的浏览器中本地运行。

您的AJAX调用必须调用特定的PHP代码,然后该代码会将数据返回给JavaScript,然后您可以使用它们来修改当前显示的HTML。

如果您在PHP代码中创建HTML,然后将其返回给JavaScript函数,则可以使用$.html()将其注入到DOM中。

最好是将感兴趣的数据作为JSON返回(请参见json_encode()),然后使用它来相应地在JavaScript中操作DOM(请参见JSON.parse())。

为了安全起见,请确保返回包装在对象而不是数组中的JSON,请参见this post regarding the vulnerability