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');
Uncaught SyntaxError : Unexpected token ILLEGAL js传递带空格的参数的更多相关文章
- JS错误:Uncaught SyntaxError: Unexpected token ILLEGAL
$('tbody', '#' + tableId).append('<tr onmouseover="this.style.backgroundColor=\'#eeeeee\'&qu ...
- 前端javascript 错误 Uncaught SyntaxError: Unexpected token ILLEGAL
前端控制台报Uncaught SyntaxError: Unexpected token ILLEGAL 错误时,就是非法字符错误,首先检查符号是否正确,不要出现中文标点! 然后检查参数之类的类型是否 ...
- 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL
在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...
- Uncaught SyntaxError: Unexpected token ILLEGAL【js错误】
应该是逗号的中英文状态错了,应该是英文状态的逗号.还有百度应用后面的逗号.college后面的冒号
- Uncaught SyntaxError: Unexpected token ILLEGAL
原因,相关的JS函数中,存在一个中文逗号,修改即可正常执行
- 【JS-Java-EL】JavaScript和Java(EL表达式)引发的 Uncaught SyntaxError: Unexpected token ILLEGAL
2018.10.14 BUG原因: 在较早期的代码中,容易出现 JS 拼接 HTML 代码字符串的情况.如 // 页面 test.jsp 内部的 JS 代码 // ${} JSP中EL语法,内部为Ja ...
- js Uncaught SyntaxError: Unexpected token错误
今天遇到js报错Uncaught SyntaxError: Unexpected token 不知道是什么原因,并且js还会继续往下执行. 经过排查竟然是在保存行的上面有个if少一个大括号,真是坑爹啊 ...
- js多条件if语句简写发生Uncaught SyntaxError: Unexpected token }
改写原生js 多条件if判断语句时,采用三元方法,发生Uncaught SyntaxError: Unexpected token } function compareImgSize() { var ...
- 【shiro】使用shiro搭建的项目,页面引用js,报错:Uncaught SyntaxError: Unexpected token <
使用shiro搭建项目过程中,总是出现登录页面 登录第一次有效果,登陆第二次出现302状态码,第三次又有效果,第四次又没有效果的局面. 因此,采用ajax提交页面登录的用户名和密码,但是在引用js的过 ...
随机推荐
- HDU -1284钱币兑换
这个是完全背包的基础题, 模拟换钱, 刚开始状态方程写错了,我直接写dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3], 然后想了想感觉太大了,不太对,后来看网上的代码 ...
- 网页JavaScript4
表单验证:一.非空验证:1.内容是不是空的.判断值的长度是不是0.length属性.压缩空格的函数. 2.内容是不是改变了. 二.对比验证:1.验证两个控件值的关系(相同,大小) 2.验证控件的值与某 ...
- AjaxManager的实现
在NeralJS思路整理一章中我们提到过实用ajax管理模块控制ajax请求,以减少ajax请求数量,优化加载,以下是ajax模块的实现,我已经确保经历简单. /** * Created by wil ...
- Wcf资料收集
1.简介 http://www.tuicool.com/articles/mqYB32 使用规范 http://blog.51cto.com/zt/219 2.教程系列 http://www.cnbl ...
- iOS 网络与多线程--3.异步Get方式的网络请求(非阻塞)
通过Get请求方式,异步获取网络数据,异步请求不会阻塞主线程(用户界面不会卡死),而会建立一个新的线程. 代码如下 ViewController.h文件 // // ViewController.h ...
- preventDefault() 方法 取消掉与事件关联的默认动作
前几天写的 响应键盘的图片切换 中, 键盘总是让浏览器滚动,为了取消掉默认的事件,使用了 preventDefault() 方法 定义和用法 preventDefault() 方法取消事件的默认动作. ...
- MFC 全局配置 读取保存配置
不知道关于全局配置别人都是怎么处理的,最近做的东西都用到全局配置,而且要保存软件的设置,下次启动时要使用上次关闭时的配置. 我的做法是建一个类用来保存和读取配置,并且在这个类中创建一些变量,供所有的界 ...
- QML之窗口(无边框、透明及拖拽)
1.无边框 Qt Quick 2.0 中 QQuickView代替了1.0中的QDeclarativeView. 无边框窗口代码如下: QQuickView viwer; //QQuickView继承 ...
- PHP学习系列(1)——字符串处理函数(3)
11.crc32() 函数计算一个字符串的 crc32 多项式.生成 string 参数的 32 位循环冗余校验码多项式.该函数可用于验证数据的完整性. 语法:crc32(string) 注意:由于 ...
- Python自动化运维之8、正则表达式re模块
re模块 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串,在文本处理方面功能非常强大,也经常用作爬虫,来爬取特定内容,Python本身不支持正则,但是通过导入re模块,Python ...