故事背景:編寫Javaweb項目,在火狐瀏覽器下運行時firebug報錯SyntaxError: expected expression, got ';'或者SyntaxError: expected expression, got 'if'等
在firebug控制台點開報錯的詳細代碼部分,發現代碼是這個樣子的:
$(document).ready(function(){
var s = ;
if(s==null||s==""){
alert("請登錄");
location.href="/SSM0413/jsp/login.jsp";
}
});
但是我在Eclipse下寫的代碼是這樣的:
$(document).ready(function(){
var s = ${sessionScope.user.userName};
if(s==null||s==""){
alert("請登錄");
location.href="/SSM0413/jsp/login.jsp";
}
});
可以很明顯的發現,變量賦值部分${sessionScope.user.userName}沒了。由此想到javascript里面可以直接使用EL表達式嗎?答案是:不能!
那么怎么才能把session中的值賦值給JavaScript函數中的變量呢?查找資料后得出下面一個思路:
在body里面寫一個span標簽,在這個span標簽里面使用EL表達式,但是為了不憑空多出一個span影響界面,設置hidden屬性將其隱藏,如:
<span id="uu" hidden="hidden">${sessionScope.user.userName}</span>
然后在js中使用getElementById獲得span標簽中的內容,就可以給變量賦值啦
var s = document.getElementById("uu").innerHTML;
總結:1、javascript里面不可以直接使用EL表達式
2、遇到這種問題可以先檢查一下js代碼,是不是格式除了問題,多寫或少寫了“;”等,還有就是確認一下應用的一些函數,庫,或者EL表達式這種東西能不能在js代碼中使用
3、好好利用firebug能解決不少問題
