【发布时间】:2018-05-13 18:51:12
【问题描述】:
我目前正在根据所选州/省使用 JQuery 代码和 JSON 文件在选择中加载城市。 JQuery 在下面。
$(document).ready(function() {
$.getJSON('../../../js/statesCities.json', function(data) {
var items = [];
var options = '<option value="">Selecione</option>';
$.each(data, function(key, val) {
options += '<option value="' + val.sigla + '">' + val.sigla + '</option>';
});
$("#estados").html(options);
$("#estados").change(function() {
var options_cidades = '<option value="">Selecione</option>';
var str = "";
$("#estados option:selected").each(function() {
str += $(this).text();
});
$.each(data, function(key, val) {
if (val.sigla == str) {
$.each(val.cidades, function(key_city, val_city) {
options_cidades += '<option value="' + val_city + '">' + val_city + '</option>';
});
}
});
$("#cidades").html(options_cidades);
}).change();
});
});});
我使用的 JSON 代码:https://gist.github.com/letanure/3012978
HTML 选择:
<div>
<b>Estado:</b>
<select id="estados" class="form-control" name="estadoCliente" required>
<option value="">Selecione</option>
</select>
</div>
<div>
<b>Cidade:</b>
<select id="cidades" class="form-control" name="cidadeCliente" required>
<option value="">Selecione</option>
</select>
</div>
事实上,这段代码运行良好。但是当我想使用 PHP 数据填写表格时,代码没有帮助。 (注册页面和编辑一样,在编辑页面,PHP加载用户信息)。如果所有州和城市都预先加载在 HTML 中(输入所有选项),为了检查数据库中的州和城市,我会使用内联 PHP 的 if ,将变量 $state 视为填写此表单的任何用户的状态。
<option <?php echo $state=='AB'?'selected': ''?>>AB</option>
但它不能被使用,因为函数 $.each 不会接受来自 PHP 的变量。所以,我的问题是如何对每个选项进行验证,将州和城市保存在数据库中?我将使用这段代码来加载用户的数据,这样我可以更轻松地编辑信息。
PS:我不知道如何才能更好地在标题上描述这个问题。
【问题讨论】:
-
到底是什么问题。据我了解您的帖子,您可以使用 javascript 生成您的选择,如果用户已经注册并预先选择了他们的城市和省份,您现在想使用 PHP 做同样的事情?您是否尝试过一些事情,或者您甚至不知道从哪里开始?
-
不知何故我觉得你不知道 php 是一种服务器语言。您只是不排队 php 语句并期望 php 会响应 JavaScript 更改事件。
-
@Lou 我有这个注册页面,管理员可以在其中注册用户。但是我编程的方式是编辑页面和注册一样。因此,在编辑用户时,系统必须从数据库中加载数据,并进行比较。明白了吗?
-
@Xorifelse 我当然知道。 PHP 不是加载城市的算法的一部分。实际上,该内联代码用于编辑页面,以检查用户的状态和城市,并在相应的选项上放置“已检查”属性。你明白了吗?
-
@GuilhermyCamargo 以及您使用的数据库技术是什么?
标签: php jquery json forms comparison