Как получить значение титульного изображения и контента в ajax php - PullRequest
0 голосов
/ 01 марта 2020

Как отобразить название данных, изображение и контент?

вот код:

просмотр. php

 $id = $_REQUEST['edit_literature_id'];
        $literature = $_REQUEST['literatureID'];
        $module = $_REQUEST['edit_moduleId'];

        if (isset($id)) {
            $dataArr = array();
            $responseArr = array();

            $sql = "SELECT * FROM $literature WHERE `id`='".$id."'";

            if ($result = mysqli_query($conn, $sql)) {
                if (mysqli_num_rows($result) > 0) {
                    while ($row = mysqli_fetch_array($result)) {
                    $data['title'] = $row['title'];
                    $data['name'] = 'data:image/jpeg;base64,' . base64_encode($row['name']);
                    $data['content'] = $row['content'];

                        array_push($dataArr, $data);
                    }
                    echo  json_encode($dataArr);
                }
                mysqli_free_result($result);
            } else {
                echo "No Record";
            }
        }

index. php

$(document).ready(function () {
            $(document).on('click', '#btnModalUpdate', function (e) {
                e.preventDefault();
                rowId = $(this).attr('data-id');
                moduleData = $(this).attr('data-module');
                literatureData = $(this).attr('data-literature');
                $('#edit_id').val(rowId);
                $('#edit_module').val(moduleData);
                $('#edit_literature').val(literatureData);
                $('#edit_imageId').val(rowId);
                $('#update').val('update');
                $.ajax({
                    type: 'POST',
                    url: '../../crud/read/view.php',
                    data: $('#modalFormUpdate').serialize(),
                    dataType: 'json',
                    success: function (data) {
                        alert(data)
                    }
                });
            });
});

введите описание изображения здесь

Что я пытаюсь сделать, это получить заголовок, изображение и контент. Как получить значение title, image и content?

как назвать «title \», «name \» и «content \» из php?

введите описание изображения здесь console.log('DATA: ' + data);

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Как ваш ajax получает. php файл должен выглядеть :

$validLiteratureIds = ['yourTable1', 'yourTable2']; 
if (!isset($_GET['edit_literature_id'], $_GET['literatureID']) || !in_array($_GET['literatureID'], $validLiteratureIds)) {
    $response = ['error' => 'Missing/Invalid Data Submitted'];
} else {
    $conn = new mysqli('localhost', 'root', '', 'dbname');
    $sql = "SELECT title, name, content
            FROM `{$_GET['literatureID']}`
            WHERE `id` = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $_GET['edit_literature_id']);
    $stmt->execute();
    $stmt->bind_result($title, $name, $content);
    if (!$stmt->fetch()) {
        $response = ['error' => 'No Record'];
    } else {
        $response = [
            'title'=> $title,
            'name' => 'data:image/jpeg;base64,' . base64_encode($name),
            'content' => $content
        ];
    }
}
echo json_encode($response);

Важные рекомендации:

  • Подтвердите ввод пользователя, чтобы только подходящие материалы имеют право доступа к вашей базе данных.
  • Записывайте результаты сбоев до результатов успеха последовательно во всем проекте, это облегчит чтение и отслеживание ваших сценариев.
  • Всегда используйте подготовленные операторы и привязывайте предоставленные пользователем данные к заполнителям в вашем запросе для стабильности / безопасности.
  • Имя таблицы не может быть связано как значение id; оно должно быть записано непосредственно в строку sql - поэтому очень важно, чтобы вы проверили значение по массиву идентификаторов литературы из белого списка.
  • Нет необходимости объявлять новые переменные для получения $_GET значения; просто получите доступ к значениям непосредственно из суперглобального массива.
  • Я собираюсь предположить, что ваш id является первичным / уникальным ключом в вашей таблице (таблицах), поэтому вам не нужно l oop за ваш набор результатов. Попытайтесь получить одну строку - она ​​будет содержать данные или набор результатов будет пустым.
  • Вызовите json_encode() только один раз и в конце вашего сценария.
  • Не стоит очищать любые результаты или закрытие подготовленного оператора или соединения, потому что эти задачи автоматически выполняются, когда выполнение скрипта завершается в любом случае - избегайте вздутия скрипта.

Что касается вашего jquery скрипта:

$(document).ready(function () {
    $(document).on('click', '#btnModalUpdate', function (e) {
        e.preventDefault();
        $.ajax({
            type: 'GET',
            url: '../../crud/read/view.php',
            data: $('#modalFormUpdate').serialize(),
            dataType: 'json',
            success: function (response) {
                if (response.hasOwnProperty('error')) {
                   console.log(response.error);
                } else {
                   console.log(response.title, response.name, response.content);
                }
            }
        });
    });
});
  • Я обрезал все несущественные строки
  • изменил POST на GET - потому что вы просто читаете данные из базы данных, а не пишете
  • parseJSON() не требуется - response - готовый к использованию объект.
  • Я проверяю свойство error в объекте ответа, чтобы получить доступ к соответствующим данным.

Оба сценария выше не проверены (и полностью написаны с моего телефона). Если я сделал какие-либо опечатки, пожалуйста, оставьте мне комментарий, и я исправлю это.

0 голосов
/ 01 марта 2020

Нет необходимости использовать пока l oop для результата. Также удалите лишние $dataArr и $responseArr

Обновите ваш код до:

в поле зрения. php

$id = $_REQUEST['edit_literature_id'];
    $literature = $_REQUEST['literatureID'];
    $module = $_REQUEST['edit_moduleId'];

    if (isset($id)) {
      $sql = "SELECT * FROM $literature WHERE `id`='".$id."'";
      if ($result = mysqli_query($conn, $sql)) {
         if (mysqli_num_rows($result) > 0) {
            $row = mysqli_fetch_array($result);
            $data['title'] = $row['title'];
            $data['name'] = 'data:image/jpeg;base64,' . base64_encode($row['name']);
            $data['content'] = $row['content'];
            echo  json_encode($data); exit;
            }
            mysqli_free_result($result);
        }
    }
      $data['error'] = "No Record";
      echo  json_encode($data); exit;

Индекс. php

$(document).ready(function () {
            $(document).on('click', '#btnModalUpdate', function (e) {
                e.preventDefault();
                rowId = $(this).attr('data-id');
                moduleData = $(this).attr('data-module');
                literatureData = $(this).attr('data-literature');
                $('#edit_id').val(rowId);
                $('#edit_module').val(moduleData);
                $('#edit_literature').val(literatureData);
                $('#edit_imageId').val(rowId);
                $('#update').val('update');
                $.ajax({
                    type: 'POST',
                    url: '../../crud/read/view.php',
                    data: $('#modalFormUpdate').serialize(),
                    dataType: 'json',
                    success: function (data) {
                        var response = jQuery.parseJSON(data);
                        var title = response.title;
                        var name = response.name;
                        var content = response.content;

                         alert(title);
                         alert(name);
                         alert(content);
                    }
                });
            });
});

После получения данных со стороны jQuery вы можете установить значение на стороне html, используя идентификатор или атрибут класса в jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...