2013-03-24 50 views
0

我哈贝建立了一个级联下拉功能很好。当表单被提交时,Id被传递给第二个脚本。我似乎无法让回调函数正常工作。不知道什么是错的。Jquery Json请求和回调到html表

note我用建议的更改更新了代码,但仍有问题。

的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

我认为脚本还是有问题,因为它没有加载。可能是什么原因? – StenW 2013-03-24 00:36:27

回答

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

而且也没有必要通过一个空数组执行():

$statement->execute(); 
+0

你说得对。我不知道是不是因为我很累,但我似乎无法让它工作。我想我不应该使用表单,因为它保留在Jquery中工作? – StenW 2013-03-24 00:16:55

+0

任何想法,我应该重写的PHP? – StenW 2013-03-24 00:18:46

+0

我按照你的建议更新了代码。 – StenW 2013-03-24 00:42:28

1

你的arent正确地发送数据,你必须发送id密钥和id值,例如

data: {'id':id}, 

而且你的JSON输出的形式为{"error": false, "form": "html string"},以便访问,你必须使用data.form代替data.out HTML字符串。所以请尝试

$.each(data.form, function(index, value){ 
    $('#formsubmit tbody').append(value); 
}); 
+0

完全正确。谢谢!我仍然认为脚本有问题,因为它没有正确加载。 – StenW 2013-03-24 00:22:47