zoukankan      html  css  js  c++  java
  • 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,1100,title:"查看照片"});
    	
      }
    
    var str =unescape($().getParmByUrl('str'));
    	var thyy = $().getParmByUrl('thyy');
    	var photo = $().getParmByUrl('photo');
    
  • 相关阅读:
    VMware+Centos 7如何配置NAT模式上网
    win 8.1 Your PC needs to be repaired修复过程
    oracle 11g 如何创建、修改、删除list-list组合分区
    关于博客园整理心得
    asp.net使用WebBrowser采集加载完毕后的页面
    解决webconfig中禁用掉ViewState造成服务器控件回传获取不到值问题
    asp.net 路由映射到ashx
    2019.3.17
    三星860 evo 250g 开启AHCI模式读写对比
    解决win10开机出现recovery there was a problem with a device connected to your pc
  • 原文地址:https://www.cnblogs.com/sily-boy/p/5498883.html
Copyright © 2011-2022 走看看