Я по существу делаю это, когда вы нажимаете на кнопку, чтобы «проголосовать»,
на данный момент у меня есть
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 не определен»
Вы определили методы.
Вместо этого вы можете прикреплять их к окнам, чтобы они были доступны из любого места.
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; }