如何将3行脚本组合成一个页面

时间:2014-04-17 09:48:06

标签: javascript php jquery sql

您好我目前使用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();
    ?>

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

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

<?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是您必须在网址中发布或添加的操作。

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 for second select box

 $("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);
     });
 });

注意我没有测试这段代码。一旦你做了更改,脚本就会发布动作以及php文件的id。在交换机中基于php文件中的$_POST['action']