ответ jquery и ajax для получения значений php-скрипта

#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);