0

こんにちは、アプリケーションを開くと (コードは質問の一番下にあります)、すぐに次のエラーが表示されます。

SyntaxError:missing ; before statement

上記のエラーは、ビュー ページのソースに次の行を示しています。

var moduleinfo = 
Notice: Undefined variable: moduleInfo in ... on line 267

上記のエラーはどのように修正できますか?

また、以下のコードでは、ユーザーがコースのドロップダウン メニューからコースを選択してコースを送信すると、モジュールのドロップダウン メニューが表示されますが、別のエラーも表示されます。

ReferenceError: validation is not defined

上記のエラーは、このエラーがページ ソースの行 1 にあり、空白行であることを示しています。

私の質問は、これらの両方のエラーを以下のコードでどのように修正できるかということです:(以下のコードの順序は、php が最初に来てから javascript が来るアプリケーションでの正確な順序です。267 行目の場所についてもコメントしました (javascript ) 最初のエラーの場合、javascript 関数の検証がどこにあるかをコメントしました)

PHP/HTML

<?php

// connect to the database
include('connect.php');
include('noscript.php');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
}


$sql = "SELECT CourseId, CourseNo, CourseName FROM Course ORDER BY CourseNo";

$sqlstmt = $mysqli->prepare($sql);

$sqlstmt->execute();

$sqlstmt->bind_result($dbCourseId, $dbCourseNo, $dbCourseName);

$courses = array(); // easier if you don't use generic names for data 

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

$outputcourse = "";
$hiddencourse = "";

while ($sqlstmt->fetch()) {
    $course     = $dbCourseId;
    $courseno   = $dbCourseNo;
    $coursename = $dbCourseName;
    $courseHTML .= "<option value='" . $course . "'>" . $courseno . " - " . $coursename . "</option>" . PHP_EOL;

    if (isset($_POST['courses']) && ($_POST['courses'] == $course)) {
        $outputcourse .= "<p><strong>Course:</strong> " . $courseno . " - " . $coursename . "</p>";
        $hiddencourse .= "<p><input type='hidden' id='hiddencourse' value='" . $courseno . " - " . $coursename . "'></p>";
    }

}

$courseHTML .= '</select>';


?>

<form action="<?php
echo htmlentities($_SERVER['PHP_SELF']);
?>" method="post" onsubmit="return validation();">
<table>
<tr>
<th>Course: <?php
echo $courseHTML;
?></th>
</tr>
</table>
<p><input id="courseSubmit" type="submit" value="Submit Course" name="courseSubmit" /></p>
<div id="courseAlert"></div>
<div id="targetdiv"></div>
</form>

<?php

if (isset($_POST['courseSubmit'])) {
    //get the form data 
    $coursesdrop = (isset($_POST['courses'])) ? $_POST['courses'] : '';

    $modulequery = "
SELECT
m.ModuleId, m.ModuleNo, m.ModuleName, m.Credits
FROM
Module m
WHERE
m.ModuleId NOT IN (
SELECT cm.ModuleId
FROM Course_Module cm
WHERE cm.CourseId = ?
)
ORDER BY m.ModuleNo
";

    $moduleqrystmt = $mysqli->prepare($modulequery);
    // You only need to call bind_param once
    $moduleqrystmt->bind_param("i", $coursesdrop);
    // get result and assign variables (prefix with db)

    $moduleqrystmt->execute();

    $moduleqrystmt->bind_result($dbModuleId, $dbModuleNo, $dbModuleName, $dbCredits);

    $moduleqrystmt->store_result();

    $modulenum = $moduleqrystmt->num_rows();

    $moduleHTML = '<select name="module" id="modulesDrop">' . PHP_EOL;
    $moduleHTML .= '<option value="">Please Select</option>' . PHP_EOL;

    $moduleInfo = array();

    while ($moduleqrystmt->fetch()) {
        $moduleHTML .= sprintf("<option value='%s'>%s - %s</option>", $dbModuleId, $dbModuleNo, $dbModuleName) . PHP_EOL;

        $moduleData               = array();
        $moduleData["ModuleId"]   = $dbModuleId;
        $moduleData["ModuleNo"]   = $dbModuleNo;
        $moduleData["ModuleName"] = $dbModuleName;
        $moduleData["Credits"]    = $dbCredits;

        array_push($moduleInfo, $moduleData);

    }


    $moduleHTML .= '</select>';


    $moduleexist = "
<div id='rt-container'>
<form id='moduleExistForm'>
<p><strong>Current Modules</strong></p>
<p>{$moduleSELECT}</p>
</form> 
</div>";

    echo $moduleexist;


}

?>

Javascript

<script type="text/javascript">
    $(document).ready(function () {

        var moduleinfo = <?php echo json_encode($moduleInfo); ?> ; //line 267

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

            var moduleId = $(this).val(),
                moduledata;

            for (var i = 0, l = moduleinfo.length; i < l; i++) {
                if (moduleinfo[i].ModuleId == moduleId) {
                    moduledata = moduleinfo[i];
                }
            }

            var currentindex = $('#credits').val(moduledata.Credits);

        });


    });

//below is the validation() function

    function validation() {

        var isDataValid = true;

        var courseTextO = document.getElementById("coursesDrop");

        var errCourseMsgO = document.getElementById("courseAlert");

        if (courseTextO.value == "") {
            $('#targetdiv').hide();
            $('#moduleForm').hide();
            $('#detailsForm').hide();
            $('#addbtn').hide();
            errCourseMsgO.innerHTML = "Please Select a Course";
            isDataValid = false;
        } else {
            errCourseMsgO.innerHTML = "";
        }

        return isDataValid;

    }
</script>
4

1 に答える 1

5

PHP 行のスペースを削除します。

var moduleinfo = <? php echo json_encode($moduleInfo); ?> ;

var moduleinfo = <?php echo json_encode($moduleInfo); ?> ;

<? phpのように一緒にいる必要があります<?php

于 2012-12-05T03:20:35.037 に答える