Uncaught SyntaxError : Unexpected token ILLEGAL js傳遞帶空格的參數


  通常在頁面中要讓某些內容點擊后產生點擊事件(非頁面跳轉)都會使用onclick,但是這樣不適於需要傳遞參數的情況,於是寫成直接調用JavaScript函數的方式:<a href=javascript:somefunction(args)>content</a>。注意,這么寫是有問題的,問題就在於somefunction中的參數args的值不能含有空格,否則瀏覽器會認為空格后面的內容是<a>標簽的某個屬性,正確的寫法應該是用引號將javascript:somefunction(args)引起來。另外還有一種方法可不必加這對引號,先將可能帶空格的參數用escape函數處理一下,然后在somefunction中用unescape函數解碼就行了。值得注意的是用encodeURI、decodeURI加解碼卻不能成功。

       在網上找了下escape和unescape、encodeURI和decodeURI、encodeURIComponent和decodeURIComponent三對組合之間的區別:

escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

       簡單總結一下用法,在不經過URL的時候,即純Javascript調用用escape;涉及URL時,通常用encodeURI對整個URL進行處理,僅當URL中含有特殊參數時,對該特殊參數局部使用encodeURIComponent。

 

if(all.aData.photo != ""){
						 var a = escape(all.aData.wt);
						return  "<a  onclick=\"infoOperation('" +a+"','"+all.aData.thly+"','"+all.aData.photo+"')\" href=\"#\" title = '查看所有'><font color=blue>" + all.aData.wt.substr(0 , 30)
						+ "</font><img title='有圖片' src="+contextpath+"/business/question/images/ytp.jpg></a>";
					}
					else{
						 var a = escape(all.aData.wt);
						return  "<a  onclick=\"infoOperation('" + a+"','"+all.aData.thly+"','"+all.aData.photo+"')\" href=\"#\" title = '查看所有'><font color=blue>" + all.aData.wt.substr(0 , 30)
						+ "</font></a>";
					}


function infoOperation(str,thyy,photo){
	var url = encodeURI(contextPath+"/business/question/wtfk/wtfkxq.jsp?str="+str+"&thyy="+thyy+"&photo="+photo);
	top.openDialog(contextPath+"/business/question/wtfk/wtfkxq.jsp?str="+str+"&thyy="+thyy+"&photo="+photo,{height:515,width:1100,title:"查看照片"});
	
  }

 

var str =unescape($().getParmByUrl('str'));
	var thyy = $().getParmByUrl('thyy');
	var photo = $().getParmByUrl('photo');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM