我正在嘗試使用ajax
和php
來更新表單域。如何正確響應PHP中的AJAX調用?
我的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。
您似乎期望成功回調中的'response'是一個JSON對象,但是您的PHP腳本僅僅回聲了幾個字符串('$ product_id','$ product_name'等)。用所有相關的數據組成一個數組,並對其進行json_encode。 – Huey
@Huey,你可以告訴我如何編輯我的PHP相應。謝謝。 – user3733831
@SMcCrohan編輯帖子時;請刪除像「謝謝」,「嗨」等不必要的短語。http://meta.stackexchange.com/q/2950/212576 – hjpotter92