0

私は非常にうまく機能するカスケードドロップダウンを作成しました。フォームが送信されると、IDが2番目のスクリプトに渡されます。コールバック関数を...関数に正しく機能させることができないようです。何が悪いのかわからない。

提案された変更でコードを更新したが、それでも問題が発生することに注意してください。

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
});
4

2 に答える 2

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();
于 2013-03-24T00:11:30.020 に答える
1

データを適切に送信する必要はありません。IDキーとID値を送信する必要があります。

data: {'id':id},

また、json出力は形式であるため、.の代わりに{"error": false, "form": "html string"}使用する必要があるhtml文字列にアクセスします。だから試してみてくださいdata.formdata.out

$.each(data.form, function(index, value){
    $('#formsubmit tbody').append(value);
});
于 2013-03-24T00:19:57.923 に答える