Как решить эту проблему "Uncaught ReferenceError: $ не определено" - PullRequest
0 голосов
/ 12 мая 2019

У меня есть код, в котором мне нужно обновить столбец таблицы (MySQL), вызывая другой php-файл, не покидая страницу, где некоторые таблицы могут разрешать встроенное редактирование.

У меня есть точка в php-отображении страницы, где можно щелкнуть значок, чтобы сохранить ввод. Код в этой точке:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<?php
$sql = "SELECT * FROM table WHERE a_column='certain_value'";
if (mysqli_query($conn, $sql)) {
    $result = mysqli_query($conn, $sql);
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            $note = $row["note"];
            $code = $row["code"];
        }
    }
}
// some tabled elements not relevant for the issue
echo "<input type='text' id='note_1' name='note_1' value=$note readonly>";
echo "<input type='text' id='new_note' name='new_note'>";
echo "<img src='icon_to_click.png' id='icon_to_click' name='icon_to_click' >";
?>

<script type="text/javascript">

$(document).ready(function() {
    $('#icon_to_click').click(function() {
        var note_orig = document.getElementById('note_1').value;
        var code_val = '<?php echo "$code" ?>';
        var note_new = document.getElementById('new_note').value;
        if (note_new != note_orig) {
            $.ajax({
                type: 'POST',
                url: 'update_notes.php',
                data: {'code': code_val, 'note': note_new},
                success: function(response){
                    document.getElementById('note_1').value = note_new;
                }
            });
        }
    });
});

Соответствующий код файла update_notes.php:

<?php 

// connection

$unsafe_note = $_POST["note"];
$code = $_POST["code"];
require "safetize.php"; // the user input is made safe
$note = $safetized_note; // get the output of safetize.php

$sqlupdate = "UPDATE table SET note='$note' WHERE code='$code'";
if (mysqli_query($conn, $sqlupdate)) {
    echo "Note updated";
} else {
    echo "Problem in updating";
}

// close connection

?>

Теперь, когда я запускаю код и смотрю на инструмент, он выдает мне ошибку: Uncaught ReferenceError: $ не определено , связывая ошибку с этой строкой предыдущего кода js:

$(document).ready(function() {

Итак, как мне это исправить?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Это означает, что вы пытались использовать Jquery в своем коде Javascript без вызова библиотеки Jquery, или код вызывается без полной загрузки библиотеки.

Я замечаю:

  • То, что вы не закрыли свой скрипт тег
  • Вы используете Jquery, поэтому вы можете использовать $('#id_name') для выбора элемента по Id вместо document.getElementById('note_1')
  • Получить значение элемента, используя Element.val() вместо Element.value

Попробуйте отредактировать ваш код следующим образом

<?php
    $sql = "SELECT * FROM table WHERE a_column='certain_value'";
    if (mysqli_query($conn, $sql)) {
        $result = mysqli_query($conn, $sql);
        if (mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
                $note = $row["note"];
                $code = $row["code"];
            }
        }
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Some title</title>
    </head>
    <body>
        <form method="post" accept-charset="UTF-8">
            <input type='text' id='note_1' name='note_1' value=<?= $code ?> readonly>";
            <input type='text' id='new_note' name='new_note'>";
            <img src='icon_to_click.png' id='icon_to_click' name='icon_to_click' >";
        </form>
        <script>
            $(document).ready(function() {
                $('#icon_to_click').click(function() {
                    var note_orig = $('#note_1').val();
                    var code_val = '<?= $code ?>';
                    var note_new = $('#new_note').val();
                    if (note_new != note_orig) {
                        $.ajax({
                            type: 'POST',
                            url: 'update_notes.php',
                            data: {'code': code_val, 'note': note_new},
                            success: function(response){
                                $('#note_1').val() = note_new;
                            }
                        });
                    }
                });
            });
        </script>
    </body>
</html>
0 голосов
/ 15 мая 2019

Эй, я столкнулся с той же ошибкой за день до этого, потому что вы пропустили использование необходимого скрипта библиотеки jquery. пожалуйста, попробуйте использовать некоторые обновленные Jquery CDN. :) Это точно поможет ИЛИ ЖЕ включите файл jquery.js перед любыми файлами плагинов jquery.

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