Функция JQuery не указана при запуске php-скрипта

Я по существу делаю это, когда вы нажимаете на кнопку, чтобы «проголосовать»,

на данный момент у меня есть

clients.php

<?php $clientInfo = "SELECT * FROM Clients ORDER BY Client ASC"; $stmt = sqlsrv_query($conn, $clientInfo); echo "<div style='width: 100%; display: inline-block;'>"; while ($client = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { echo "<div class='clientid' style='height: 50px; font-size: 18px; vertical-align: middle; display: inline-block; width: 100%'>" . " <div style='width: 35%;'></div> <div onclick=\"voteUp()\" style='display: inline-block; width: 5%;'> <span style='font-size: 20px;' class='hover-cursor fa fa-chevron-up vote-up'></span> </div>" . "<div class='hover-cursor hvr-underline-reveal' style='width: 20%; display: inline-block;' data-clientid='{$client['ClientID']}'>" . $client['Client'] . "</div>" . "<div onclick=\"voteDown()\" style='display: inline-block; width: 5%;'> <span style='font-size: 20px; text-align: right;' class='hover-cursor fa fa-chevron-down vote-down'></span> </div> <div style='width: 35%;'></div> </div> <br />"; } echo "</div>"; ?> 

как вы видите выше, есть функция onclick для voteUp ().

В нижней части моей страницы у меня есть

 <script type="text/javascript" src="scripts/scripts.js"></script> 

и в scripts.js (я получил бит для голосованияUp () из учебника, щелкнув div, чтобы запустить php-файл)

 $(document).ready(function() { $('.pull-me').click(function() { $('.panel1').slideToggle('fast') }); $('.pull-me').click(function() { $('.panel2').slideToggle('fast') }); $('.pull-me').click(function() { $('.panel3').slideToggle('fast') }); $("#selection-box1").change(function() { document.location.href = $(this).val(); }); $(".output").click(function () { var noteid = $(this).data("noteid"); var templatenoteid = $(this).data("templatenoteid"); var variablenoteid = $(this).data("variablenoteid"); if ($(this).data("noteid")) { $("#right-box").load("noteContent.php", {noteid: noteid}); } else if ($(this).data("templatenoteid")) { $("#right-box").load("templateNoteContent.php", {templatenoteid: templatenoteid}); } else { $("#right-box").load("variableContent.php", {variablenoteid: variablenoteid}); } }); var modal = document.getElementById('login-box'); window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } } //This script votes up and down for the client function voteUp() { $.get("voteup.php"); return false; } function voteDown() { $.get("votedown.php"); return false; } }); 

И, наконец, в voteup.php

 <?php include 'connectionDetails.php'; ?> <?php if (isset($_POST['clientid'])) { $voteup = "UPDATE Clients SET Pos = (SELECT MAX(Pos) FROM Clients) + 1 WHERE ClientID = " . $_POST['clientid']; $stmt = sqlsrv_query($conn, $voteup); } else { echo "No ClientID"; } ?> 

Когда я нажимаю кнопку Vote Up, которая является DIV с onclick = "voteUp ()"

Почему в консоли появляется ошибка: «ReferenceError: voteUp не определен»

Related of "Функция JQuery не указана при запуске php-скрипта"

Вы определили методы.

Вместо этого вы можете прикреплять их к окнам, чтобы они были доступны из любого места.

 window.voteUp = function() { $.get("voteup.php"); return false; } window.voteDown = function() { $.get("votedown.php"); return false; } 

Почему бы не использовать jQuery вместо встроенного JS? Дайте свои классы div:

 <div class="voteup" data-clientid="{$client['ClientID']}">...</div> 

Затем используйте jQuery вместо onclick() поскольку он будет намного чище:

 $(document).on('click', '.voteup', function(){ var clientid = $(this).data('clientid'); $.get("voteup.php", { clientid: clientid }); return false; }) 

Поскольку вы уже используете jQuery, это поможет вам очистить свою разметку, давая вам свободу вносить изменения в вашу разметку и ваш JavaScript.

Кроме того, это устранит проблемы, связанные с определением области охвата, так что вам не нужно добавлять пространства имен.

Единственная проблема, которую я вижу, заключается в том, что вы не передаете $_POST['clientid'] в voteup.php, поэтому ваш запрос никогда не будет запущен. Вы можете включить data-client-id в декларацию div но вам придется изменить свой тест на вашем PHP:

 if (isset($_GET['clientid'])) 

Поскольку вы отправляете значение вместе с запросом GET.

Почему я получаю сообщение об ошибке в консоли: «ReferenceError: voteUp не определен»

Объем.

voteUp() и voteDown определены в стартовом блоке (внутри {} из $(document).ready(function() ... поэтому недоступны вне этого блока.

Вам нужно переместить две функции снаружи:

 $(document).ready(function() { ... }); function voteUp() { $.get("voteup.php"); return false; } function voteDown() { $.get("votedown.php"); return false; }