我已经建立了一个功能非常好的级联下拉菜单。提交表单时,Id将传递给第二个脚本。我似乎无法让回调函数正常运行。不知道出了什么问题。
注意我使用建议的更改更新了代码,但仍然出现了问题。
php:
<?php
if (!empty($_GET['id'])) {
$id = $_GET['id'];
try {
$objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT *
FROM `forms`
WHERE `id` = '$id'";
$statement = $objDb->prepare($sql);
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($list)) {
$out = array();
foreach ($list as $row ) {
$out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>';
}
echo json_encode(array('error' => false, 'list' => $out));
} else {
echo json_encode(array('error' => true));
}
} catch(PDOException $e) {
echo json_encode(array('error' => true));
}
}else {
echo json_encode(array('error' => true));
}
?>
Jquery ajax调用。
$('#blankett_form').submit(function() {
var id = $(this).find('.update:last').val();
if (id == '') {
alert('Välj land och region.'); //glöm inte bort att ändra beroende på land.
} else {
var table = '<table class="table table-hover table-bordered"><thead><tr><th>blanketter.</th><th>datum tillagt.</th></tr></thead><tbody></tbody></table>'
$('#formsubmit').empty().append(table)
$ajax({
url: 'func/blankett_func2.php',
data: {'id':id},
dataType: 'JSON',
success: function(data)
{
$.each(data.list, function(index, value){
$('#formsubmit tbody').append(value);
});
}
});
return false
});
答案 0 :(得分:1)
替换:
$each(data.out, function(){
var trow = out;
$('#formsubmit tbody').append(trow);
});
使用:
$each(data.form, function(i, val){
$('#formsubmit tbody').append(val);
});
因为每个函数中都没有out
变量,看起来你正在命名返回数组中的键form
?
在PHP中,您要在循环内重新声明数组,需要:
$out = array();
foreach ($list as $row ) {
$out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>';
}
并且不需要将空数组传递给execute():
$statement->execute();
答案 1 :(得分:1)
您没有正确发送数据,您必须发送id密钥和id值,例如
data: {'id':id},
此外,您的json输出格式为{"error": false, "form": "html string"}
,因此要访问html字符串,您必须使用data.form
而不是data.out
。所以试试
$.each(data.form, function(index, value){
$('#formsubmit tbody').append(value);
});