在我的数据库中,我创建了一个名为“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上按什么按钮,脚本都会从按钮发布单个值。
使用jQuery通过Ajax设置变量(方法POST)。
尝试更改代码如下:
$('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);
});
}
});
在回显输入时设置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);
});
}
您应该使用通用的单击处理程序而不是您正在使用的处理程序。
如果所有按钮都有一个共同的类,您可以听取所有的点击。
将类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()
函数来减少代码行。