#javascript #php #jquery #ajax
#javascript #php #jquery #ajax
Вопрос:
Я новичок в использовании функций jquery и Ajax.
Я создаю веб-сайт с таблицей с несколькими строками, эти строки загружаются из базы данных с помощью php. Теперь, когда я нажимаю кнопку редактирования, отображается информация об этих полях. Чтобы получить его, я прочитал, что лучший способ — использовать ajax.
В этом коде jquery идея заключается в том, чтобы перебирать все ячейки, и когда ячейка является codigo, завершите цикл для каждой и установите это значение в методе post функции ajax.
Мой код:
$('#edit').on('show.bs.modal', function (event) {
var $button = $(event.relatedTarget) // Button that triggered the modal
var row = $button.closest("tr"), // edit button is in the same row as data you want to change
$tds = row.find("td"); // get all table cells in that row
var cod;
$.each($tds, function(index,value) {
var field = $(this).data("field");
if (field == 'codigo'){
cod = $(this).text();
return false;
}
});
alert(cod);
$.ajax({
method: 'POST',
dataType: 'json',
url: 'queryProduct.php',
data: {codigo: cod}
}).done(function(response){
response = JSON.parse(response);
// Here get the values of the JSON
});
var src_value = $tds.closest("td").find('img').attr('src'); // Get attrib src de img and set to a modal window element
$('[name="imagen"]').attr("src",src_value);
});
queryProduct.php
<?php
session_start();
if(isset($_SESSION['username']) and $_SESSION['username'] <> ''){
include("functions.php");
include("tools.php");
$conn = Conectarse("localhost", "5432", "dbname", "dbuser", "dbpass");
$codigo = $_POST['codigo'];
echo $codigo;
$query = "SELECT * FROM produccion.ma_producto WHERE codigo={$codigo}";
$result = pg_query($conn, $query);
if ($result == TRUE) {
echo json_encode($result);
} else {
echo "Error query: " . $conn->error;
}
$conn->close();
} else{
?><p>La sesión no está activa, por favor ingrese <a href="login.php">aquí</a></p>
<?php
}?>
Проблема в том, что консоль разработчика показывает мне сообщение об ошибке в queryProduct.php Я не уверен, что проблема заключается в отправке переменной кода в метод post:(
Показать сообщение об ошибке из консоли разработчика:
Комментарии:
1. Удалите кавычки в
data: {codigo: "$(this).text()"}
2. @Andreas Я удалил его, но есть еще… с помощью консоли. в журнале не отображается значение codigo. Как мне получить значение codigo? Я обновил свой код HTML-кодом с полями данных.
3. @Andreas Я обновил свой код. Проблема со значением поля данных кода решена. Проблема в том, что когда я публикую это значение, консоль всегда показывает мне сообщение об ошибке.
4. Добавьте сообщение об ошибке в свой пост, чтобы мы могли увидеть, что произойдет.
5. Я пытаюсь открыть этот URL-адрес, который отображается в консоли. Он не работает addcom-web-developer/addcloud/queryProduct.php
Ответ №1:
измените ваши данные на это:
data: {codigo: cod}. // since your cod is already a variable
Комментарии:
1. Также я пробовал с вами, но это не работает! Я обновил код с учетом ваших изменений.
2. после того, как вы предупредите (cod); это что-то предупреждает? имеет ли код значение?
3. если в вашем ajax нет ошибки в отношении URL-адреса, попробуйте это на вашем queyproduct. if(isset($_post)) { var_dump($_post); } поместите это перед вашим условием isset(сеанса)
4. Что означает этот код? Я ввел queryProduct.php в строке 1 перед этим isset (сессия), но я не вижу изменений
5. Когда я открываю окно разработчика из браузера, отображается это сообщение: «Внутренняя ошибка сервера 500»
Ответ №2:
Проблема была с командами pg php.
Обычно я использовал базу данных mysql, и в моем коде были команды mysql.
Теперь это работает:
if (!$result) {
echo "Error query: " . pg_last_error($conn);
} else {
echo json_encode($result);
}
pg_close($conn);