【问题标题】:It is not displaying data in text inputs它不在文本输入中显示数据
【发布时间】:2013-02-28 22:59:01
【问题描述】:

我在一些文本输入的下方和下方有一个下拉菜单。我想做的是,当我从下拉菜单中选择一门课程时,它应该显示在文本输入中选择的课程的相关详细信息。但是文本输入中没有显示任何内容。现在我没有收到任何错误,但我相信我在代码中做错了一些事情,因为课程详细信息没有显示在文本输入中。如何获取文本输入中显示的详细信息?

下面是 mysqli 的下拉菜单代码和检索每门课程的 Duration:

$coursequery = "
SELECT CourseId, CourseNo, CourseName, Duration, CourseActive
FROM Course
WHERE
(CourseActive = ?)
ORDER BY CourseNo
";

... //mysqli prepare

$courseqrystmt->execute(); 

$courseqrystmt->bind_result($dbCourseId, $dbCourseNo, $dbCourseName, $dbCourseDuration, $dbCourseActive);

$courseqrystmt->store_result();

$coursenum = $courseqrystmt->num_rows();     

$courseHTML = '';

$courseHTML = '<select name="course" id="coursesDrop">'.PHP_EOL;
$courseHTML .= '<option value="">Please Select</option>'.PHP_EOL;           

$studentInfo = array();
$courseInfo = array();

while ( $courseqrystmt->fetch() ) {

$courseHTML .= sprintf("<option value='%s'>%s - %s</option>", $dbCourseId, $dbCourseNo, $dbCourseName) . PHP_EOL;   

$courseData = array();
$courseData["Duration"] = $dbCourseDuration;

array_push($courseInfo, $courseData);

}


$courseHTML .= '</select>';

以下是文本输入的代码:

$editsession = "
<form id='updateForm'>

    <p><strong>Course Chosen:</strong></p>
    <table>
    <tr>
    <th></th>
    <td><input type='hidden' id='currentId' name='Idcurrent' readonly='readonly' value='' /> </td>
    </tr>
    <tr>
    <th>Course No:</th>
    <td><input type='text' id='currentCourseNo' name='CourseNocurrent' readonly='readonly' value='' /> </td>
    </tr>
    <tr>
    <th>Course Name:</th>
    <td><input type='text' id='currentCourseName' name='CourseNamecurrent' readonly='readonly' value='' /> </td>
    </tr>
    <tr>
    <th>Duration:</th>
    <td><input type='text' id='currentDuration' name='Durationcurrent' readonly='readonly' value='' /> </td>
    </tr>
    </table>
    </form>
";

echo $editsession;

下面是 jquery 代码,它根据从课程下拉菜单中选择的课程在文本输入中显示数据:

 $(document).ready( function(){

                        var courseinfo = <?php echo json_encode($courseInfo);?>;

        $('#coursesDrop').change( function(){

            $('#targetdiv').hide();
            var courseId = $(this).val();


                        if (courseId !== '') {
        for (var i = 0, l = courseinfo.length; i < l; i++)
        {
                if (courseinfo[i].CourseId == courseId) { 

        var currentindex = $('#currentDuration').val(courseinfo[i].Duration);

                var text = $(this).find('option:selected').text();
                var split = text.split(' - ');
                $('#currentId').val($(this).find('option:selected').val());
                $('#currentCourseNo').val( split[0] );     
                $('#currentCourseName').val( split[1] );  

                break;
        }
       }

     }
                 else{
                $('#currentCourseNo,#currentCourseName,#currentDuration,#currentId,#studentselect').val('');         
        }

    });


        $('#courseForm').delegate('change','select',(function(warnings)
{
    return function()
    {
        warnings.html('');
    };
}($('#warnings'))));

});

【问题讨论】:

  • 您需要对 json 字符串进行 PARSE..

标签: php javascript jquery mysqli


【解决方案1】:

thisjQuery函数:

$.parseJSON();

当您定义 var "courseinfo" 时,php 将返回一个字符串(采用 json 格式)。您需要将此字符串转换为对象(或数组),以便轻松访问内容。

【讨论】:

    【解决方案2】:

    如果您的 json_encode($courseInfo) 返回正确的 json 字符串。

    您可以简单地使用 JSON.parse 将字符串转换为可用的 javascript 对象

    var courseinfo = JSON.parse('<?php echo json_encode($courseInfo);?>');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 2016-11-29
      • 2020-09-10
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多