我正在尝试使用ajax
和php
更新表单字段。
我的AJax电话是这样的:
var productId = 'productId=' + id;
$.ajax({
url: './includes/process_edit_products.php',
method: 'post',
data: productId
}).success(function(response) {
// Populate the form fields with the data returned from server
$('#userForm')
.find('[name="product_id"]').val(response.product_id).end()
.find('[name="product_name"]').val(response.product_name).end()
.find('[name="product_price"]').val(response.product_price).end()
.find('[name="product_des"]').val(response.product_des).end();
// Show the dialog
bootbox
.dialog({
title: 'Edit Products',
message: $('#userForm'),
show: false // We will show it manually later
})
.on('shown.bs.modal', function() {
$('#userForm')
.show() // Show the login form
.formValidation('resetForm'); // Reset form
})
.on('hide.bs.modal', function(e) {
$('#userForm').hide().appendTo('body');
})
.modal('show');
});
PHP处理脚本是这样的:
if ((isset($_POST['productId'])) && (is_numeric($_POST['productId'])) ) { // Form submission.
$productId = (int)$_POST['productId'];
//echo $productId;
// fetch the selected product to edit
$query = " SELECT product_id, product_name, price, product_des
FROM product
WHERE product_id = ? LIMIT 1";
$stmt = $mysqli->prepare($query);
if ($stmt) {
// Bind "$imageId" to parameter.
$stmt->bind_param('i', $productId);
// Execute the prepared query.
$stmt->execute();
$stmt->store_result();
// count rows
$numrows = $stmt->num_rows;
if ($numrows == 1) {
// get variables from result.
$stmt->bind_result($product_id, $product_name, $price, $product_des);
// Fetch all the records:
while ($stmt->fetch()) {
//echo $product_id;
//echo $product_name;
//echo $price;
//echo $product_des;
//$response = array('product_id' => $product_id, 'product_name' => $product_name, 'product_price' => $price, 'product_des') => $product_des;
//echo json_encode($Response);
$resultArray['product_id'] = $product_id;
$resultArray['product_name'] = $product_name;
$resultArray['price'] = $price;
$resultArray['product_des'] = $product_des;
echo json_encode($resultArray);
}
// Close the statement:
$stmt->close();
unset($stmt);
}
}
}
我的问题是我不知道如何获取php处理数据并使用现有数据填充表单字段。
任何人都可以告诉我在php中需要做什么。
答案 0 :(得分:2)
您似乎希望success
回调中的响应成为JSON对象,但您的PHP脚本只会回显几个字符串($product_id
,$product_name
等)。创建一个包含所有相关数据的数组,并json_encode
。
$resultArray = array();
while{
...
$curProduct['product_id'] = $product_id;
$curProduct['product_name'] = $product_name;
$curProduct['price'] = $price;
$curProduct['product_des'] = $product_des;
$resultArray[] = $curProduct;
}
echo json_encode($resultArray);
之后,您可能需要使用以下方法解析JSON客户端:
.success(function(response) {
response = jQuery.parseJSON(response)
$.each(response, function(index,value){
...
});
});
因为您要同时检索多个产品,所以需要使用foreach循环来遍历所有产品并相应地填充表单。