如何将三行脚本组合成一页


How to combine 3 line script into one page

嗨,我目前使用javascript来调用在辅助页面上运行sql查询的小函数。我有大约4到5个这样的小脚本,我只是想知道如何将它们放在一起,并能够从这个页面中调用我需要的脚本,而不是有5个不同的脚本,其中有3到5行代码。我的代码和过程如下。

首先是我目前正在使用的JavaScript。

$("select#principle").attr("disabled","disabled");
            $("select#type").change(function(){
                var id = $("select#type option:selected").attr('value');
                $("select#principle").attr("disabled","disabled");
                $("select#principle").html("<option>wait...</option>");
                $.post("select_principle.php", {id:id}, function(data){
                    $("#Options").addClass("active");
                    $("select#principle").removeAttr("disabled");
                    $("select#principle").html(data);
                });
            });

这是一个JavaScript函数,我使用它来检查是否选择了下拉框,然后删除下一个下拉框的disable属性。但是正如您所看到的,有一个$.Post,它调用PHP页面。

被调用的页面是

<?php
    include "select.class.php";
    echo $opt->ShowPrinciple();
?> 

这是进入select.class.php页面并运行sql查询的php代码。这也是我有多个的代码。我希望这个代码在一个脚本中,其他脚本以相同的方式调用其他函数,但它们只有在被调用时才能运行。

运行的SQl查询低于

// this displays the principle when called
public function ShowAllPrinciple()
{
    $sql = "SELECT principle.principle_id,principle.description,principle.section_id,COUNT(media.principle_id) as media_count
            FROM principle 
            LEFT OUTER JOIN media ON principle.principle_id = media.principle_id 
            AND principle.section_id = media.section_id 
            WHERE principle.section_id={$_POST['id']}
            GROUP BY principle.principle_id,principle.description";
    $res = mysql_query($sql,$this->conn);
    $principle = '<option value="%">choose...</option>';
    while($row = mysql_fetch_array($res))
    {
        $principle .= '<option value="' . $row['principle_id'] . '">' . $row['description']. '...('.$row['media_count'].') </option>';
    }
    return $principle;
}

这只是一个简单的SQL查询,它连接到数据库,然后获取数据并将其显示在下拉框中。

关于如何将这些小脚本放在一个页面中并使用JavaScript调用特定函数的任何想法——只有小脚本才需要在PHP页面中,SQL查询在PHP页面内——这一点无法改变。

 <?php
        include "select.class.php";
        echo $opt->ShowPrinciple();
    ?>

任何帮助都将不胜感激

根据你的问题,我认为你需要这样的东西:

<?php
include "select.class.php";
switch ($_POST['action']) {
    case "firstAction":
        echo $opt->ShowPrinciple();
        break;
    case "secondAction":
        echo $opt->ShowSomethingElse();
        break;
    case default:
        echo 'something went wrong';
        break;
}
?>

其中$action是您必须在url中发布或添加的操作。

javascript示例:第一个选择框的Javascript

$("select#type").change(function() {
    var id = $("select#type option:selected").attr('value');
    $("select#principle").attr("disabled", "disabled");
    $("select#principle").html("<option>wait...</option>");
    $.post("select_principle.php", {action: 'firstAction', id: id}, function(data) {
        $("#Options").addClass("active");
        $("select#principle").removeAttr("disabled");
        $("select#principle").html(data);
    });
});

第二个选择框的Javascript

 $("select#type").change(function() {
     var id = $("select#principle option:selected").attr('value');
     $.post("select_principle.php", {action: 'sencondAction', id: id}, function(data) {
         $("select#principle").html(data);
     });
 });

注意,我没有测试这个代码。一旦您进行了更改,脚本就会将操作以及id发布到php文件中。在开关中是基于php文件中的$_POST['action']