【发布时间】:2013-04-28 02:47:33
【问题描述】:
背景
我有一个 Web 应用程序,它显示有关帐户的“简单”信息,即姓名和帐号……我在侧面有一个按钮来显示“详细”信息……即姓名、帐户号和电话#.
系统需要在单击此按钮时动态提取信息,并将填充到指定的 div 中...在这种情况下我做错了什么,因为我 不断收到带有“错误加载信息”的警报。 编辑: - 将错误警报更改为警报(textStatus) - 现在我所拥有的只是警报框中的“错误”......
JS/Ajax
$('.view_information').click(function(e) {
//On Clicking the function, dynamically load the data for the viewing
var dataObj = {};
dataObj["id"] = $(this).data('id');
dataObj["action"] = "get"; // "get" or "set"
$.ajax({
url: 'view_agency_info.php',
type: 'POST',
data: dataObj,
dataType: 'json',
success: function(data){
/* Doesn't Work....*/
$('.view_id').html(data.id);
$('.view_name').html(data.name);
$('.view_account').html(data.account);
$('.view_phone').html(data.phone);
/*Also Doesn't work...
$('.view_id').html(data.message['id']);
$('.view_name').html(data.message['name']);
$('.view_account').html(data.message['account']);
$('.view_phone').html(data.message['phone']);*/
},
error: function(jqXHR, textStatus, errorThrown){
// alert('Error Loading Information');
alert(textStatus);
}
});
JSON
<?php
include_once('customer.class.php');
$customer = new Customer();
$query = "SELECT * FROM table WHERE id=$id LIMIT 1"; //expecting one row
try {
$result = $customer->runQuery($query); //class function with fetchAll
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
$message = array(
'id' => $id,
'name' => $result[0]['agency_name'],
'account' => $result[0]['account_number'],
'phone' => $result[0]['phone']
);
}
print json_encode($message);
?>
【问题讨论】:
-
当您可以拥有包含有关为什么会发生错误的信息的动态错误消息时,不要输出固定错误消息。例如
alert(textStatus)怎么样?从更大的角度来看,如果您的 JS 代码除了 json 文本之外什么都没有,那么您的服务器端脚本不应该输出任何东西但 json。如果您的查询失败,您将输出一条纯文本错误消息,该消息将不是有效的 json。您永远不会知道为什么会收到错误消息,因为您所说的只是“出了点问题”。 -
@Marcb TBH php 脚本处理了更多功能,所以我不相信它会像所说的那么简单....由于我是 JSON 和 AJAX 的新手,如果我切换
alert(textStatus)如前所述,我还需要做其他事情吗?...顺便说一句,什么不是严格意义上的 json? -
"Error: " ...只是一个将输出到客户端的明文字符串。它将被加载到 JSON 解析器中,导致它出错。当然,只有在发生 db 故障时才会发生这种情况,但仍然......您会将非 json 文本输出到需要 json 的上下文中。 -
@MarcB ... 通过使用 alert(textStatus) 我仍然只收到“错误”
标签: php javascript mysql ajax json