在寻找解决问题的大约五天的答案之后,我想我也可以寻求一些帮助。我正在进行级联下拉,我似乎无法开始工作。
Mysql数据保存在一个表中,其中包含country(varchar)和regions(varchar),文档名称(varchar),文档链接(varchar)以及添加日期(timestamp)。
我希望第一个下拉列表导致包含区域的第二个下拉列表。我查看了很多教程,但我似乎找不到使用PDO或Mysqli的教程。提交表单时,我希望文档的名称显示为超链接和添加的日期。
我开始使用:http://www.electrictoolbox.com/json-data-jquery-php-mysql/
这是我的代码:
“下拉网站”
<form>
<select name="country" id="countryname">
<option>Sverige</option>
<option>Norge</option>
<option>Danmark</option>
<option>Finland</option>
</select>
<select name="region" id="regionname">
</select>
</form>
Javascript(jQuery)
function popregion() {
$.getJSON('/blanketter_func2.php', {countryname:$('#countryname').val()}, function(data) {
var select = $('#regionname');
var options = select.prop('options');
$('option', select).remove();
$.each(data, function(index, array) {
options[options.length] = new Option(array['region']);
});
});
}
$(document).ready(function() {
popregion();
$('#countryname').change(function() {
popregion();
});
});
函数文件(blanketed_func2.php)。
<?php
$dsn = "mysql:host=localhost;dbname=blanketter";
$username = "root";
$password = "root";
$pdo = new PDO($dsn, $username, $password);
$rows = array();
if(isset($_GET['countryname'])) {
$stmt = $pdo->prepare("SELECT region FROM blanketter WHERE country = ? ORDER BY region");
$stmt->execute(array($_GET['countryname']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);
?>
我正在使用jQuery版本1.9.1,任何帮助将不胜感激!
/斯登
答案 0 :(得分:0)
问题在于Javascript。 Jquery的感觉1.9 .live已被改为.on。 正确的Jquery代码是:
var formObject = {
run : function(obj) {
if (obj.val() === '') {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
} else {
var id = obj.attr('id');
var v = obj.val();
jQuery.getJSON('func/blankett_func.php', { id : id, value : v }, function(data) {
if (!data.error) {
obj.next('.update').html(data.list).removeAttr('disabled');
} else {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
}
});
}
}
};
$(function() {
$('.update').on('change', function() {
formObject.run($(this));
});
});