在我的数据库中,我创建了一个名为“ coursePlaces”的表,其中有7列和许多行。
加载php文件course.php,我连接到数据库,并从表“ coursePlaces”中选择数据,并使用它回显多个具有不同ID和值的按钮:
<?php
/* CONNECTION TO DB */
require 'includes/dbh.inc.php';
/* ACCESS COURSE AND GRADE VAR FROM URL WITH GET */
$course = $_GET['course'];
$grade = $_GET['grade'];
/* SELECTS DATA FROM TABLE AND ECHOES BUTTONS WITH DIFFERENT ID AND VALUE DEPENDING ON TABLE CONTENT */
$sql = "SELECT * FROM coursePlaces WHERE grade='$grade' AND course='$course'";
$result = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($result)) {
echo '<input type="submit" id="place-' . $row['placeName'] . '" value="' . $row['placeName'] . '">';
}
/* CONVERTS VAR TO USE IN JQUERY SCRIPT */
echo '<script>';
echo 'var grade = ' . json_encode($grade) . ';';
echo 'var course = ' . json_encode($course) . ';';
echo '</script>';
?>
<script src="includes/global.inc.js"></script>
<!-- DIV TO ECHO OUTPUT FROM PLACE.INC.PHP -->
<div class="selectedPlace" id="selectedPlace"></div>
单击其中一个按钮时,该值应发送到文件“ global.inc.js”中,在该文件中,我放置了用于监听点击的脚本:
$('input#$row['placeName']').on('click', function() {
var place = $('input#place-$row['placeName']').val();
if (place !='') {
$.post('includes/place.inc.php', {place: place, grade: grade, course: course }, function(data) {
$('div#selectedPlace').text(data);
});
}
});
我的问题是,我不知道按钮id的名称是什么-因为它是从数据库表中的varchar创建的。我如何将这些信息带到我的.js文件中,因此无论用户在Courses.php中按下哪个按钮,脚本都会通过按钮发布单独的值。
答案 0 :(得分:0)
使用jQuery通过Ajax(方法POST)设置变量。
答案 1 :(得分:0)
尝试如下更改代码:
$('input[type="submit"]').on('click', function() {
var place = $(this).val();
if (place !='') {
$.post('includes/place.inc.php', {place: place, grade: grade, course: course }, function(data) {
$('div#selectedPlace').text(data);
});
}
});
答案 2 :(得分:0)
在您回显输入时设置click属性:
echo sprintf('<input type="submit" id="place-%s" value="%s" onclick="yourfunction("%s", "%s", "%s") >', $row['placeName'], $row['placeName'], $grade, $course);
并分开此您的功能功能:
function yourfunction(place, grade, course){
$.post('includes/place.inc.php', {place: place, grade: grade, course: course }, function(data) {
$('div#selectedPlace').text(data);
});
}
答案 3 :(得分:0)
您应该使用通用点击处理程序,而不要使用所使用的点击处理程序。
如果“所有”按钮具有一个通用类,则可以收听所有按钮的单击。
将class inputBtn添加到以下内容:
echo '<input type="submit" id="place-' . $row['placeName'] . '" value="' . $row['placeName'] . '" class="inputBtn">';
更改
$('input#$row['placeName']').on('click', function() {
到
$('.inputBtn').on('click', function() {
var btnID = $(this).prop('id');
var spltID = btnID.split('-'); //split from the - & spltID[1] will contain the part that you required.
}
为清楚起见,此代码的编写方式类似。可以使其更优化,例如可以在btnID上调用split()
函数以减少代码行。