【发布时间】:2014-09-11 13:27:58
【问题描述】:
我正在尝试使用 Jquery 将带有产品和价格的动态行添加到订单表单中。问题是我需要从 mysql 动态填充产品下拉列表。行添加正确。我遇到的唯一问题是下拉菜单只有一个选项,并且该选项显示“未定义”。
编辑 1: 我更改了 PHP 代码。我认为它现在格式正确,但我的选择列表中仍然出现“未定义”。
编辑 2: 我测试了 php,但出现了一些错误。现在 php 可以自行完美运行并返回以下 json 编码数组,但是当我尝试将其拉入我的 jquery 脚本时,它仍然返回“未定义”结果。 :
[{"product":"wedding 4","price":"400.00","id":"9"},
{"product":"wedding 2 ","price":"400.00","id":"8"},
{"product":"Wedding 1","price":"4000.00","id":"1"},
{"product":"potato","price":"50.00","id":"6"},
{"product":"Event","price":"3000.00","id":"5"},
{"product":"alligator","price":"800.00","id":"7"}]
jQuery:
var count = 0;
$(document).ready(function(){
$('p#add_field').click(function(){
count += 1;
$('#addingContainer').append('<strong>Link #' + count + '</strong><br />' + '<label>Product or Service</label><select id="product_' + count + '" name="products[]'+ '" >');
$.get('includes/productrow.php', function(data){
$('#product_' + count + '').append('<option value=' + data.product_id + ' data-price=' + data.price + '>' + data.product +'</option>');
});
$('#addingContainer').append('</select> <label>Price</label><input type="text" id="price_' + count + '" name="prices[]' + '" class="price" >');
});
productrow.php
<?php
$productSql = "SELECT product_id, product, price FROM products WHERE compid = '$compid' ORDER BY product desc";
$productResult = mysql_query($productSql, $link);
while($productRow = mysql_fetch_array($productResult)){
$final_array[] = array("product" => $productRow['product'], "price" => $productRow['price'], "id" => $productRow['id']);
};
echo json_encode($final_array);
?>
** 免责声明,我知道我应该使用 PDO,一旦这个项目完成,我将开始使用它。
【问题讨论】:
-
您既不应该使用 PHP-MySQL 也不应该使用 PHP-MySQLi,它们都不好,现在它已被弃用,将在下一个版本中删除
-
@Developer106 是什么让您认为
mysqli扩展已被弃用? -
我不完全了解您的用例。如果您希望在页面加载时动态填充下拉列表,则不需要 javascript/jQuery 来执行此操作。您是否尝试在页面加载后向下拉列表中添加其他选项?
-
@MikeBrant 页面加载时不会有任何内容。用户单击“添加”链接将产品行添加到页面,此时需要动态填充下拉列表。
-
不,我的意思是带有已弃用的 MySQLi 的 MySQL 不太好,您最好使用 PDO,为数据库层提供更多抽象。