【发布时间】:2010-01-09 13:49:52
【问题描述】:
平台:
jQuery、PHP、mySQL
我有什么:
我正在使用 jQuery 处理来自表单的信息并将所有 POST 数据发送到一个 php 文件,该文件执行多个操作并返回一个数据数组以及其他必要的数据。其中一个数组是数组的数组。我需要以可以将每个嵌套数组值附加到表的方式访问这个数组值数组。
我需要什么:
我一直在努力使用 jquery 代码来让它工作很长时间,但它不起作用。因此,如果有人可以帮助我解决 jquery 代码,我将不胜感激。提前致谢。
表格结构
fname lname city
Ed Al SA
Bob B MN
Chris V KJ
PHP 代码
//Content of my PHP file that return json encoded data
$success = 1;
$new_rows_data['fname'] = array();
$new_rows_data['lname'] = array();
$new_rows_data['city'] = array();
$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3");
while( $row = mysql_fetch_array($result) )
{
$new_rows_data['fname'][] = $row['fname'];
$new_rows_data['lname'][] = $row['lname'];
$new_rows_data['city'][] = $row['city']
}
print json_encode(array('success' => $success, 'new_rows_data' => $new_rows_data));
jQuery 代码:
$('#button_delete').click(function() {
$.ajax({
type: 'POST',
cache: false,
url: 'test.php',
data: $('#form1').serialize(),
dataType: 'json',
success: function(data) {
if(data.success == '1')
{
jQuery.each(data.new_rows_data, function(i, val)
{
$('#table').append('<tr>'+
'<td>'+val.fname+'</td>'+
'<td>'+val.lname+'</td>'+
'<td>'+val.city+'</td>'+
'</tr>');
});
}//END if
}
}) //END ajax
return false;
});
我正在尝试将这些新数据附加到具有 id # 表的现有表中,以便我看起来像以下 DESIRED OUTPUT:
First Name Last Name City
Orko C OI ---> (Existing row of data)
Gordon Flash KS ---> (Existing row of data)
Ed Al SA ---> New row of data that just got appended
Bob B MN ---> New row of data that just got appended
Chris V KJ ---> New row of data that just got appended
【问题讨论】:
-
“它不起作用”是什么意思?它是否从服务器接收数据?它是否正确循环数据?有很多地方可能会出错......有什么症状?
-
删除了我的答案,因为它不再相关...您尝试过@cballou 的建议吗?究竟是什么不工作?是否调用了成功函数?如果你添加一个错误处理函数,这会触发吗?
-
@Brandon @jammus 我已经尝试过@cballou 的建议。正在调用成功函数。附加到表格部分不起作用。以下代码不会产生将新行添加到表末尾的预期效果: jQuery.each(data.new_rows_data, function(i, val) { $('#table').append('
'+ ' '); });希望我说得通。谢谢。'+val.fname+' '+ ''+val.lname+' '+ ''+val.city+' '+ ' -
@Brandon 是的,它正在接收来自服务器的响应。它似乎在 PHP 文件中正确循环,并且它正确地向我发送了其他响应,例如 data.success 值为 1。我尝试添加错误处理程序,但它没有触发。如果我发出警报(data.success);在成功事件中,它提醒我:1,这是正确的。我认为是 jQuery.each 循环停止工作/不起作用(我的意思是它不会将 'new_rows_data' 中包含的数据添加到表的末尾。这就是我失去的功能。希望这会有所帮助。谢谢你。
-
@Devner Brandon 的问题仍然存在。发生了什么而不是预期的行为?您是否收到 JavaScript 错误?行附加代码是否根本没有效果?您是否已验证您的 $('#table') 选择器与您认为的匹配? data.new_rows_data 中返回的数据结构是你所期望的吗?