У меня есть php-страница, генерирующая и отображающая таблицу. для последней строки в таблице я хочу отобразить изображение с включенной функцией onclick. это отправит имя пользователя для выбранной строки скрипту, который будет использовать AJAX для обновления базы данных. Таблица отображается отлично, но AJAX не работает. мой php для отображения изображения:
echo "<td> <img id='tblimg' onclick='like('" . $row['Username'] . "')' src='like.jpg' alt='like/dislike image' width='80px' height='30px'></td>";
Функция javascript:
<script type="text/javascript" > function like(user) { $.ajax( url: "update.php", type: "POST", data: { 'username': user, 'liked': '1' }, success: function() { alert("ok"); } ); } </script>
И вот update.php:
<?php $con=mysqli_connect("","sam74","********","sam74"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $Username = $_POST['username']; $Liked = $_POST['liked']; $sql = "UPDATE 'followers' SET 'Liked' = '$Liked' WHERE 'Username' = '$Username'"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } mysqli_close($con);
?>
В этом коде есть некоторые ошибки, позвольте мне помочь вам по очереди.
echo "<td> <img id='tblimg' onclick=\'like('" . $row['Username'] . "');\' src='like.jpg' alt='like/dislike image' width='80px' height='30px'></td>";
Функция javascript:
Сначала выбери свои кавычки для события onclick
function like(user) { $.ajax({ url: "update.php", type: "POST", data: { 'username': user, 'liked': '1' }, success: function() { alert("ok"); } }); }
добавить {и} к вызову ajax
Удалить кавычки из имени таблицы и полей
$sql = "UPDATE followers SET Liked = '$Liked' WHERE Username = '$Username'";
в успехе ajax и после начала функции вы всегда можете распечатать сообщение, чтобы узнать, вызвана ли ваша функция, и если php-скрипт возвращает некоторую ошибку, используйте предупреждение для этого
ОБНОВИТЬ
success: function(data){ alert(data); // this will print you any php / mysql error as an alert }
ОБНОВЛЕНИЕ 2
Напишите свой вариант onclick следующим образом.
echo "<img onclick=\"like('" . $row['Username']. "');\" src='like.jpg' alt='like/dislike image' width='80px' height='30px' />";
Функция jQuery.ajax()
ожидает, что объект будет передан; вам нужно использовать {
и }
чтобы начать и закончить литерал объекта. То, что у вас есть, – это недействительный синтаксис JavaScript, если вы проверили инструменты разработчика вашего браузера, вы увидите ошибку, указывающую на это. Так:
$.ajax( url: "update.php", type: "POST", data: { 'username': user, 'liked': '1' }, success: function () { alert("ok"); } );
должно быть
$.ajax({ // added { url: "update.php", type: "POST", data: { 'username': user, 'liked': '1' }, success: function () { alert("ok"); } }); // added }