我不知道这种语法错误,当它一直在说别的时候{在下面的代码中:
$(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"}];
答案 0 :(得分:3)
您应该在浏览器中打开该页面,获取错误,然后执行查看源以查看实际进入浏览器的内容。
可能的罪魁祸首是这一行:
var courseinfo = <?php echo json_encode($courseInfo); ?> ;
三种可能性:
我不是PHP专家,你声称空间并不存在。<? php
(?
之后的空格)确实是一个有效的开头标记(而不是<?php
没有空间)?因为如果它不是,那可能是PHP没有处理它,所以文本会逐字地发送到浏览器。这自然会成为一个问题。
如果不是这样,我怀疑PHP中的您现在引用了输出内容,这是一个有效的数组文字。$courseInfo
并不是您所期望的,因此无法正确输出。
如果您引用的文本不在PHP预处理的文件中,那将是一个问题,因为代码将被发送到浏览器。通常,Web服务器配置为使用PHP预处理.php
个文件,但不预处理.js
个文件。因此,如果您引用的文本位于.js
文件中,它将按原样进入浏览器(其中包含PHP代码),这可能不是您想要的。<\ n / s>我猜测,由于您已将输出引用为已处理,因此必须对其进行预处理。
我最后的想法是,您在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('');
}
});
});
如果它不起作用,我说对不起好吧.... 祝你好运