语法错误,否则{是什么意思?

时间:2012-12-06 13:06:09

标签: jquery

我不知道这种语法错误,当它一直在说别的时候{在下面的代码中:

$(document).ready(function () {

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

    $('#coursesDrop').change(function () {
        var courseId = $(this).val();

        /*
            You only need to do all of this if user selects a course, so check that first.
        */
        if (courseId !== '') {
            /*
                Iterate over courses and, if the one we want exists, populate its info.
            */
            for (var i = 0, l = courseinfo.length; i < l; i++) {
                if (courseinfo[i].CourseId == courseId) {
                    $('#currentDuration').val(courseinfo[i].Duration);
                    $('#newDuration').val(courseinfo[i].Duration);
                    $('#currentCourseId').val(courseinfo[i].CourseId);
                    $('#newCourseId').val(courseinfo[i].CourseId);

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

                    /*
                        Without this break, the loop will continue until i = l.
                        We've already found our match, no need to continue.
                    */
                    break;
                }
            }
        } else {
            $('#currentCourseNo,#currentCourseName,#currentDuration,#currentCourseId').val('');
        }
    });
});

括号似乎正确,但为什么我上面的代码会出现此语法错误?

确切的错误显示为Syntaxerror: syntax error,然后在视图页面来源中显示了else{

var courseinfo = <?php echo json_encode($courseInfo);?> ;在页面来源中输出以下内容:

var courseinfo = [{"CourseId":1,"CourseNo":"INFO101","CourseName":"Bsc Information Communication Technology","Duration":"4"},{"CourseId":2,"CourseNo":"INFO102","CourseName":"Bsc Computing","Duration":"3\/4"},{"CourseId":8,"CourseNo":"INFO103","CourseName":"Business and Finance","Duration":"3"},{"CourseId":9,"CourseNo":"INFO107","CourseName":"Mathematics","Duration":"4"}];

3 个答案:

答案 0 :(得分:3)

您应该在浏览器中打开该页面,获取错误,然后执行查看源以查看实际进入浏览器的内容。

可能的罪魁祸首是这一行:

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

三种可能性:

  1. 我不是PHP专家,<? php?之后的空格)确实是一个有效的开头标记(而不是<?php 没有空间)?因为如果它不是,那可能是PHP没有处理它,所以文本会逐字地发送到浏览器。这自然会成为一个问题。你声称空间并不存在。

  2. 如果不是这样,我怀疑PHP中的$courseInfo并不是您所期望的,因此无法正确输出。您现在引用了输出内容,这是一个有效的数组文字。

  3. 如果您引用的文本不在PHP预处理的文件中,那将是一个问题,因为代码将被发送到浏览器。通常,Web服务器配置为使用PHP预处理.php个文件,但不预处理.js个文件。因此,如果您引用的文本位于.js文件中,它将按原样进入浏览器(其中包含PHP代码),这可能不是您想要的。<\ n / s>我猜测,由于您已将输出引用为已处理,因此必须对其进行预处理。

  4. 我最后的想法是,您在else附近的文字中有一个隐形字符。尝试删除整行(可能是两侧的几行,以防万一)并重新输入(仔细)。

答案 1 :(得分:3)

如果评论中显示的行和T.J. Crowder在您的javascript中,请返回到您的php脚本并从<? php

中删除空格

答案 2 :(得分:0)

我无法确定问题的位置...... 因为你没有显示任何HTML行... 但是你想尝试这个代码:

$(function(){
var courseinfo = <?php echo json_encode($courseInfo);?>;
$('#coursesDrop').change(function(){
    var courseId = $(this).val();

    /*
        You only need to do all of this if user selects a course, so check that first.
    */
    if (courseId != ''){
        /*
            Iterate over courses and, if the one we want exists, populate its info.
        */
        for (i = 0;i < courseinfo.length;i++){
            if (courseinfo[i].CourseId == courseId){
                $('#currentDuration').val(courseinfo[i].Duration);
                $('#newDuration').val(courseinfo[i].Duration);
                $('#currentCourseId').val(courseinfo[i].CourseId);
                $('#newCourseId').val(courseinfo[i].CourseId);

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

                /*
                    Without this break, the loop will continue until i = l.
                    We've already found our match, no need to continue.
                */
                break;
            }
        }
    } else {
        $('#currentCourseNo,#currentCourseName,#currentDuration,#currentCourseId').val('');
    }
    });
});

如果它不起作用,我说对不起好吧.... 祝你好运