如何设置可变

时间:2019-02-26 08:09:31

标签: javascript php jquery html

在我的数据库中,我创建了一个名为“ 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中按下哪个按钮,脚本都会通过按钮发布单独的值。

4 个答案:

答案 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()函数以减少代码行。