1. 程式人生 > >ajax向後臺傳遞引數-動態組織json串

ajax向後臺傳遞引數-動態組織json串

ajax提交json格式的本質是提交了如下格式的引數:"&name=123&password=456",而且這種格式下,name和passowrd都可以是變數賦值,但是使用{“name”:value}格式的話,這裡的name是不能為變數的,只有value可以是變數。

1、index.jsp

<form action="<%=basePath%>register/register.action" method="post" id="formid">
		使用者名稱:<input type="text" name="userName" id="userName" class="mark"/><br /> 
		<input type="submit" value="提交" /><br />
	</form>


2、register.js

$(function(){
	//我們不知道name或者id ,只通過class獲取元素的id和name以及value,動態獲取這些值的話,不能使用{變數:變數}提交,只能使用"&"+變數1+"="+變數2的形式,因為ajax僅支援 {"常量":變數}的json格式
	$(".mark").blur(function(){checkUserName2(this)});
});

//提交表單的ajax
function checkUserName2(theid){
	
	//data="&"+id+"="+value是ajax的本質模式,這裡id是一個變數,比如 id="userName",等同於 data={userName:value}={'userName':value},二者 的區別是{}中的key不能為變數
	//var data="&"+id+"="+value;
	var data=gainJson(theid);
	
		$.ajax({
			url : "register/checkUserName.action",// 請求地址
			//timeout : 600000,//超時時間設定,單位毫秒
			async : false,// 非同步
			cache : false,// 快取
			type : 'post',// 請求方式
			/*data: $('#formid').serialize(),//序列化表單*/			
			data:data,						
			dataType : 'json',// 伺服器返回的資料型別
			contentType:"application/x-www-form-urlencoded; charset=utf-8",
			success : function(msg) {// 請求成功後呼叫的
				if(msg.result=="true"){
					//去除非法提示
					alert("true");
				}else{
					//增加非法提示
					alert("false");
				}
			
			},
			
			error :function(){
			alert("異常");
			}
		});

	};

	//獲取id和值的公共方法,返回json格式
	function gainJson(theid){
		var id=$(theid).attr("id");
		var value=$("#"+id+"").val();
		var str="&"+id+"="+value;
		return str;
	}