2016-06-24 3 views
0

Привет, я пытаюсь обновить данные, взятые из модальной формы с помощью ajax. Я правильно передаю данные, но по какой-то причине они не обновляются в базе данных.JQuery Ajax не обновляет значения в mysql

код 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 

Но до сих пор они не обновляются. Что я делаю не так?

+0

Вы используете '$ _GET' в php. замените '$ _GET' на' $ _POST' – Poonam

+0

по-прежнему не обновляет данные – BRG

+0

Ваши короткие комментарии 'still not update 'совсем не очень полезны. Дайте нам некоторые отладочные данные или информацию, если вы хотите получить дополнительную помощь. Мы не можем выполнить ваш скрипт на нашей стороне ... – eisbehr

ответ

3

Вы используете type: "POST", в своем запросе ajax и пытаетесь получить к нему доступ с помощью $_GET.

Изменить все $_GET[]; к $_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']; 

Изменить 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}; 
+0

все еще не обновляется – BRG

+0

См. обновленный ответ – Vinie

+0

Если все еще не обновлен, то print_r ($ _ POST) или см. консоль браузера, если ваша dataString проходит через ajax или а не – Vinie

2

термоусадочную код. Почему так много накладных расходов? Используйте объект для передачи данных в функцию 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 к $_POST, потому что ваш Аякса имеет 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']; 
+0

все еще не обновляет данные – BRG

+0

Работает ли ваше SQL-соединение? Создайте 'print_r ($ _ POST)' в вашем php-скрипте и посмотрите, есть ли размещенные данные. – eisbehr

+0

Благодарим вас за помощь – BRG

2

Есть две проблемы с вашим кодом. Правильный способ передачи данных в AJAX - использовать пары значений ключа. Например,

{"key":"value"} 

Вы отправляете следующие данные POST в AJAX. (Этот метод может быть использован, когда вы используете метод 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 

Второй вопрос вы пытаетесь retrive данные, $_GET, как это должно быть $_POST, поскольку Вы отправляете данные как AJAX 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']; 
+0

они по-прежнему не обновлены, как вы предложили – BRG

+0

Попробуйте эхо выше переменных в PHP-скрипте и посмотрите, действительно ли вы получаете данные на PHP или нет. Если вы получаете данные на PHP, должно быть что-то не так с SQL-соединением/командой. –

+0

Благодарим вас за помощь – BRG

Смежные вопросы