![](/img/trans.png)
[英]JQuery/AJAX update DIV from MYSQL - Get values from different input 2 inputs
[英]Jquery Ajax does not update values in mysql
您好,我正在尝试使用Ajax更新取自模态形式的数据。 我正确提交了数据,但是由于某些原因,它们没有在数据库中更新。
我的Javascript代码:
<script>
jQuery(document).ready(function ($) {
var modalId = '<?php echo $row['csid']?>';
var feedback = null;
var homepage_teaser = null;
var review_comment = null;
var review_visible_website = null;
var dataString = null;
var review_rating = '<?php echo $row['rating']?>';
var booking_csid = '<?php echo $row['csid']?>';
var property_id = '<?php echo $row['currentPropertyId']?>';
var review_customer_id = '<?php echo $row['cusid']?>';
$("#saveButton_"+modalId).click(function () {
feedback = $('#feedback_'+ modalId).val();
homepage_teaser = $('#teaser_'+ modalId).val();
review_comment = $('#feedbackcomment_'+ modalId).val();
review_visible_website = $('#checkbox_'+ modalId).val();
dataString = 'feedback='+ feedback + '&homepage_teaser='+ homepage_teaser + '&review_comment=' + review_comment + '&review_visible_website=' + review_visible_website+ '&review_rating=' + review_rating+ '&booking_csid=' + booking_csid+ '&property_id=' + property_id + '&review_customer_id=' + review_customer_id;
$.ajax({
type: "POST",
url: "ajax/feedback_overview_update.php",
data: dataString,
cached: false,
success: function () {
alert("Updated: " + dataString);
},
error: function () {
alert("failure");
}
});
console.log("Modal Submited: " + modalId);
console.log("Modal Data: " + dataString);
});
});
</script>
和PHP脚本:
try{
$handler = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpass");
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$handler->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8mb4 ");
$handler->exec("SET CHARACTER SET UTF-8 ");
}catch(Exception $e){
echo $e->getMessage();
die();
}
$feedback = $_GET['feedback'];
$homepage_teaser = $_GET['homepage_teaser'];
$review_comment = $_GET['review_comment'];
$review_visible_website = $_GET['review_visible_website'];
$review_rating = $_GET['review_rating'];
$booking_csid = $_GET['booking_csid'];
$property_id = $_GET['property_id'];
$review_customer_id = $_GET['review_customer_id'];
$updatefeedback = $handler->prepare("UPDATE reviews SET feedback = ?, homepage_teaser = ?, review_comment = ?, review_visible_website = ?, review_rating = ?, review_checked = 'yes', review_checked_date = NOW() WHERE booking_csid = ? AND property_id = ? AND review_customer_id = ?");
$updatefeedback->bindValue(1, $feedback);
$updatefeedback->bindValue(2, $homepage_teaser);
$updatefeedback->bindValue(3, $review_comment);
if ($review_visible_website == 'on') {
$updatefeedback->bindValue(4, 'yes');
} else {
$updatefeedback->bindValue(4, 'no');
}
$updatefeedback->bindValue(5, $review_rating);
$updatefeedback->bindValue(6, $booking_csid);
$updatefeedback->bindValue(7, $property_id);
$updatefeedback->bindValue(8, $review_customer_id);
$updatefeedback->execute();
if ($updatefeedback) {
echo "Success";
} else {
echo "Failure";
}
这是dataString值:
Modal Data: feedback=Sehr schön&homepage_teaser=this is homepage&review_comment=this is feedback comment&review_visible_website=on&review_rating=3.25&booking_csid=1679&property_id=87&review_customer_id=22
但是仍然没有更新。 我究竟做错了什么?
您在ajax请求中使用type: "POST",
并尝试使用$_GET
访问它。
更改所有$_GET[];
到$_POST[];
在你的PHP中
$feedback = $_POST['feedback'];
$homepage_teaser = $_POST['homepage_teaser'];
$review_comment = $_POST['review_comment'];
$review_visible_website = $_POST['review_visible_website'];
$review_rating = $_POST['review_rating'];
$booking_csid = $_POST['booking_csid'];
$property_id = $_POST['property_id'];
$review_customer_id = $_POST['review_customer_id'];
如下更改dataString
dataString = {'feedback': feedback , 'homepage_teaser': homepage_teaser ,
'review_comment': review_comment ,
'review_visible_website':review_visible_website,
'review_rating': review_rating, 'booking_csid': booking_csid,
'property_id': property_id , 'review_customer_id': review_customer_id};
收缩您的代码。 为什么要这么多开销? 使用对象将数据传递给ajax函数。
$(function() {
var csid = '<?php echo $row['csid']?>',
review_rating = '<?php echo $row['rating']?>',
property_id = '<?php echo $row['currentPropertyId']?>',
review_customer_id = '<?php echo $row['cusid']?>';
$("#saveButton_" + csid ).click(function() {
$.ajax({
type: "POST",
url: "ajax/feedback_overview_update.php",
cached: false,
data: {
feedback: $('#feedback_' + csid).val(),
homepage_teaser: $('#teaser_' + csid).val(),
review_comment: $('#feedbackcomment_'+ csid).val(),
review_visible_website: $('#checkbox_'+ csid).val(),
review_rating: review_rating,
booking_csid: csid,
property_id: property_id,
review_customer_id: review_customer_id
},
success: function() {
alert("Updated");
},
error: function () {
alert("failure");
}
});
console.log("Modal Submited: " + csid);
});
});
在您的PHP中,将$_GET
更改$_GET
$_POST
,因为您的ajax type: 'POST'
$feedback = $_POST['feedback'];
$homepage_teaser = $_POST['homepage_teaser'];
$review_comment = $_POST['review_comment'];
$review_visible_website = $_POST['review_visible_website'];
$review_rating = $_POST['review_rating'];
$booking_csid = $_POST['booking_csid'];
$property_id = $_POST['property_id'];
$review_customer_id = $_POST['review_customer_id'];
您的代码有两个问题。 在AJAX中传递数据的正确方法是使用键值对。 像这样
{"key":"value"}
您正在使用AJAX发送以下POST数据。 (当您使用GET方法提交数据并随URL附加字符串时,可以使用此方法)
'feedback='+ feedback + '&homepage_teaser='+ homepage_teaser + '&review_comment=' + review_comment + '&review_visible_website=' + review_visible_website+ '&review_rating=' + review_rating+ '&booking_csid=' + booking_csid+ '&property_id=' + property_id + '&review_customer_id=' + review_customer_id;
应该用键/值对代码代替。 像这样:
data: {'feedback':feedback,'homepage_teaser':homepage_teaser} //add other params same like this
第二个问题是,当您将数据发布为AJAX POST时 ,您正试图以$_GET
形式检索数据,因为它应该是$_POST
。 因此,替换您的以下PHP代码:
$feedback = $_POST['feedback'];
$homepage_teaser = $_POST['homepage_teaser'];
$review_comment = $_POST['review_comment'];
$review_visible_website = $_POST['review_visible_website'];
$review_rating = $_POST['review_rating'];
$booking_csid = $_POST['booking_csid'];
$property_id = $_POST['property_id'];
$review_customer_id = $_POST['review_customer_id'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.