繁体   English   中英

jQuery Ajax不会更新mysql中的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM