Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Jquery Json请求和对html表的回调_Php_Jquery_Ajax_Json - Fatal编程技术网

Php Jquery Json请求和对html表的回调

Php Jquery Json请求和对html表的回调,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我已经建立了一个功能非常好的级联下拉列表。提交表单时,Id将传递给第二个脚本。我似乎无法使回调函数正常工作。不知道怎么了 注意:我用建议的更改更新了代码,但还是出现了一些问题 php: <?php if (!empty($_GET['id'])) { $id = $_GET['id']; try { $objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root'); $objDb->exec('SE

我已经建立了一个功能非常好的级联下拉列表。提交表单时,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));
}


?>

jqueryajax调用

$('#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
});
$('blankett_form')。提交(函数(){
var id=$(this.find('.update:last').val();
如果(id=''){
警报(“Välj土地och地区”);//glöm inte bort attändra beroende påland。
}否则{
变量表='blanketter.gt'
$('#formsubmit').empty().append(表)
$ajax({
url:'func/blankett_func2.php',
数据:{'id':id},
数据类型:“JSON”,
成功:功能(数据)
{
$.each(data.list,函数(索引,值){
$('#formsubmit tbody')。追加(值);
});
}
});
返回错误
});
更换:

$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>';
}

如果未正确发送数据,则必须发送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);
});

你是对的。我不知道这是否是因为我累了,但我似乎无法让它工作。我想我不应该使用表单,因为它在Jquery中是保留的工作?知道我应该如何重写php吗?完全正确。谢谢!我仍然认为脚本中有一些错误,因为它没有正确加载。我认为这仍然是一个问题h脚本无法加载,原因可能是什么?
$.each(data.form, function(index, value){
    $('#formsubmit tbody').append(value);
});