js&jQuery细节总结

1.jQuery中ajax提交错误的细节:

       在$.ajax()中,在data中以json形式存储时,key值为常量,就算是变量,不会把它当做变量来处理,直接把他的变量名看作一个字符串常量存储,当提交时发现未按自己认为的方式提交时,这可能是其中一个原因。而value值可以是变量,也可以是常量,当其中的变量是一个未定义的变量时,可能就会出问题了。如下代码,data中,上传时以test=test123的形式上传,因此key值可以不加双引号时不要认为value值也可以不加双引号,否则上传容易出问题。

var test = "test123";
$.ajax({
type:"get",
url:"emailveryfy",
data:{test:test},
success:function(data){},
dataType:"json"
});
2.jQuery中submit()提交无反应细节:

       在使用submit()对form表单进行提交时,需要注意对其中的id不要取名为“submit”,否则提交时会没有反应,这个命名可能是与submit()的名字冲突了,错误代码如下,可以将按钮的id修改为其他的名字。

<script type="text/javascript">
$(function(){
$("submit").click(function(){
$("form").submit();
});
});
</script>

<form action="tourl" method="get">
<input id="submit" type="button"/>
</form>


3.动态创建的按钮事件添加细节:
       在使用代码装载完后进行对点击事件添加时,需要注意动态创建的按钮在装载完之后是不存在的,所以在那时候添加动态创建的事件是没有效果的,可以在创建该节点的js方法中在创建完后对其进行事件的添加。

4.ajax乱码问题:

       jQuery中ajax似乎对gbk的支持不是特别的好,不论怎么修改contentType,gbk的中文都会乱码。解决乱码问题的可以使用下列方法:

    1.仅将相关的后台类改为utf-8格式并以utf-8返回数据,在$.ajax中添加contentType: "application/x-www-form-urlencoded; charset=UTF-8"属性。

$.ajax({
		type:"get",
		url:"al/community.do",
		success:function(data){
			if(data){
				showlist.push(data);
				console.log(data);
			}
		},
		contentType: "application/x-www-form-urlencoded; charset=utf-8",
		dataType:"json"
	});
      2.通过对中文进行编码和解码。后台以UTF-8的形式编码中文发送到前台,在前台进行解码。这种情况下对datatype为text格式的内容相对方便些,但对json形式的数据可能就不会很方便了,如果想以json形式接收数据,后台需要具体到对json中的每一个中文进行编码,如果不这样,前台也需要对每一个中文解码,这样会很麻烦,基本上不会使用。对json的接收其实可以改为以text形式接收,即dataType:"text",这样台可以直接对最终的json进行编码发送到前台,前台也可以接收到数据,后通过decodeURIComponent对text数据进行解码。注意,不要使用decodeURI进行解码,decodeURI解码时不会解码符号的,这样会导致后面通过JSON解析成json失败。
$.ajax({
		type:"get",
		url:"al/searchquestion",
		data:{"pattern":encodeURI(pattern)},
		success:function(data){
			if(data!=null){
				var cdata =decodeURIComponent(data);
				jdata = JSON.parse(cdata); 
				console.log(data);
				for(var i = 0;i < jdata.length;i++){
					var $question = $("<div style='margin-lefet:70px;margin-top:60px;'></div>");
					var $link = $("<a href='javascript:void(0)' qid='"+jdata[i].questionid+"' οnclick='addid(this)'></a>");
					var str = i+1+"."+jdata[i].question;
					$link.html(str);
					$question.append($link);
					$seaques.append($question);
				}
			}
		},
		dataType:"text"
	});
        3.可以通过out进行字节码的形式返回前台,这种方法在学servlet的时候应该都使用过,就不作介绍了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值