【发布时间】:2015-08-11 21:49:02
【问题描述】:
我是 JSON 新手。我有一个选择框和 JavaScript change() 触发器。我根据选定的值使用 Ajax 执行 MySQL 查询。查询结果将打印为 HTML 表格中的新行。
但是新行没有追加。我做错了什么?
HTML
<select id="orderAddProduct">
<option value=""></option>
<option value="0001">Product 1</option>
<option value="0002">Product 2</option>
</select>
<table id="orderTable">
<tr><th>ID</th><th>Name</th></tr>
</table>
JavaScript
$("#orderAddProduct").change(function () {
var element = $(this);
var selectedValue = $(this).val();
$.ajax({
type: "POST",
url: "orderAddProduct.php",
data: {option: selectedValue},
datatype: "json",
success: function (data) {
alert("OK");
orderAddRow(data);
},
error: function () {
alert("ERROR");
}
});
});
function orderAddRow($item) {
$.each($item,function(index,value) {
var row = '<tr><td>'+value.id+'</td>'
+'<td>'+value.name+'</td></tr>';
$('#orderTable').append(row);
)};
}
PHP
try {
$pdo = new PDO(DB_TYPE . ':host=' . DB_HOST . '; dbname=' . DB_NAME, DB_USER, DB_PASS);
} catch (PDOException $e) {
die("ERROR: " . $e->getMessage());
}
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("SET NAMES utf8");
$productId = $_REQUEST['option'];
$sql = $pdo->prepare("SELECT * FROM products_view WHERE id = ?");
$sql->execute(array($productId));
$row = $sql->fetch(PDO::FETCH_ASSOC);
$json_array = array("ID" => $row['id'], "name" => $row['name']);
echo json_encode($json_array);
【问题讨论】:
-
alert("OK")显示了吗?您是否检查过变量data包含您期望它包含的内容(例如使用console.log(data))? -
控制台日志中有错误吗?
each循环是否按照您认为的方式执行(通过将console.log放入其中进行检查)? -
@Anders,是的,
alert("OK")显示正确。我刚刚编辑了代码并添加了console.log(data),请查看我的问题中的错误消息。selectedValue是未定义的索引...我该怎么办? -
标记第 21 行会有所帮助。
-
@Anders,我使用的是
$_REQUEST['selectedValue']而不是$_REQUEST['option'],这是正确的。现在其他一切(json)都可以,但没有附加行。
标签: javascript php jquery mysql json