通过ajax从外部文件加载html

时间:2018-05-24 01:08:59

标签: php ajax

我需要在我的项目中从外部文件加载一些html,就像你在下面的代码中看到这个我的php代码

if(strtolower($_SERVER["request_method"]) == "get") {
    $html = "";
    $path = $_GET["path"];
    if($path == "cities-select-options") {
        $country_code = htmlspecialchars($_GET["country_code"]);
        $get_cities = get_cities($country_code);
        $html .= ' <option value=""> --- </option> ';
        foreach($get_cities as $city):
            $html .= ' <option value="">'.$city["city_name"].'</option> ';
        endforeach;
        echo $html;
    }elseif() {
        /* */
    }
}

这是我的js代码

$( "#ad_country" ).on("change",function() {
    $country_id = $(this).val();
    $.get("htmlLoader.php?path=cities-select-option&country_id="+$country_id,function(html) {
        $("#ad_city").html(html);
    });
});

但我对此方法感到困惑。因为我有太多的部分需要通过ajax加载。所以我的问题是:有条件可以做到这一点而无需编写许多条件吗?

1 个答案:

答案 0 :(得分:1)

您可以将每个路径的代码放在不同的函数中,并使用关联数组来调用它们。

$paths = array(
    'cities-select-option' => 'get_cities_options',
    'states-select-option' => 'get_states_options',
    ...
);

function get_cities_options() {
    $html = ' <option value=""> --- </option> ';
    $country_code = $_GET["country_code"];
    $get_cities = get_cities($country_code);
    foreach($get_cities as $city):
        $html .= ' <option value="">'.$city["city_name"].'</option> ';
    endforeach;
    return $html;
}

function get_states_options() {
    ...
}

if (strtolower($_SERVER['REQUEST_METHOD'] == 'get') {
    $path = $_GET['path'];
    if (isset($paths[$path])) {
        echo $paths[$path]();
    }
}