1

在 PHP MVC 应用程序中,模型部分有一个city.php定义城市类的文件。

city 类有一个方法来获取一个省的所有城市,即

getCitiesByProvince('ProvinceId')

当用户从省下拉列表中选择一个省时,我需要getCitiesByProvince('ProvinceId')根据用户在省下拉列表中选择的省 ID 值进行 ajax 调用。

我该怎么做呢?

编辑:1)页面使用 GET 方法而不是 POST 方法。2) 控制器文件使用 switch($action) 来执行特定案例。例如获取所有城市

 case 'cities': //Get all cities for  a provinceId
                $city= new city();
                $cities = $City->getCitiesByProvince('ProvinceId');
                echo json_encode($cities);

动作可能是一个隐藏的 html 属性,它告诉 php 脚本要执行什么动作/案例......也许像

 <input type="hidden" name="action" value="cities" />

这是我目前不太熟悉的另一个开发人员的代码,我只是想通过查看各种文件来猜测事情是如何工作的......

4

2 回答 2

1

让您的 PHP 文件执行以下操作:

<?php
$province = $_GET['p'];

$cities = array();
$city_results = ... // fetch cities from database

foreach($city_results as $city_result) {
    $cities[] = $city_result->city;
}

echo json_encode($cities);
?>

让您的 Javascript 执行以下操作:

$.ajax({
    type: "GET",
    url: "php_url_path",
    data: { p: get_province_here() },
    success: function (cities) {
        for (var i = 0; i < cities.length; i++) {
            ... // handle options here
        }
    }
});

这将创建您寻求的文件间连接。享受和好运!

于 2012-07-17T19:52:11.820 回答
1

您将无法直接从模型中调用它,您需要在控制器中执行名为 getcities 或其他任何操作并使用 $.ajax 或 $.get 或 $.post 或 $.getJSON 来检索结果假设它们是 json 格式,这里有一个使用 $.post 的示例

如果你的控制器是控制器内的 citycntrl.php 你会做

//以任何你想要的格式获取城市数组的任何逻辑例如:'{zip}' => '{cityname}',或者只是带有常规键的 {cityname}

使用 $_POST['providenceId']; 密钥是用 jQuery 发送的

你想要做的是通过 json_encode($arrayname); 运行数组。并根据providenceId post值在您的控制器中回显。

这是一个更好的代码示例,适用于您的下拉场景,我第一次误读并错过了下拉部分

$.post('controller/getcities', {
    provinceId: $('#{dropdownIDorCLASS}:selected').val();
}, function (data) {
    //data will contain your list of cities passed down from your controller.
    //do whatever with returned json data
}, 'json');

如果我只是把你的废话弄糊涂了,请随时通过 Skype 与我联系,我希望能更好地帮助联合国:fall.networks

于 2012-07-17T19:50:57.123 回答