标签:
ASP.NET AJAX
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
1 var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(‘Microsoft.XMLHTTP‘); //创建XMLHTTP对象,考虑兼容性 2 xmlhttp.open("POST", "AJAXTest.ashx?i=5&j=10", true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题),Post请求浏览器一定不会缓存。这里还没有发出请求。true代表异步请求。 3 xmlhttp.onreadystatechange = function () 4 { 5 if (xmlhttp.readyState == 4) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成) 6 { 7 if (xmlhttp.status == 200) //如果状态码为200则是成功 8 { 9 alert(xmlhttp.responseText); 10 } 11 else 12 { 13 alert("AJAX服务器返回错误!"); 14 } 15 } 16 } 17 //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!! 18 xmlhttp.send(); //这时才开始发送请求 19 //发出请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。试着在ashx加一句Thread.Sleep(3000);
简单的ajax封装:
1 function ajax(url,onsuccess,onfail) 2 { 3 var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(‘Microsoft.XMLHTTP‘); 4 xmlhttp.open("POST", url, true); 5 xmlhttp.onreadystatechange = function () 6 { 7 if (xmlhttp.readyState == 4) 8 { 9 if (xmlhttp.status == 200) 10 { 11 onsuccess(xmlhttp.responseText); 12 } 13 else 14 { 15 onfail(xmlhttp.status); 16 } 17 } 18 } 19 xmlhttp.send(); //这时才开始发送请求 20 }
1 <script type="text/javascript"> 2 3 var p1 = { name: ‘rupeng‘, age: 8 }; 4 //alert(p1.name); 5 var strs1 = ["rupeng", "baidu", "qq"]; 6 for (var i = 0; i < strs1.length; i++) { 7 //alert(strs1[i]); 8 } 9 10 var persons = [{ name: ‘rupeng‘, age: 8 }, { name: ‘baidu‘, age: 15 }, { name: ‘qq‘, age: 18 }]; 11 for (var i = 0; i < persons.length; i++) { 12 var person = persons[i]; 13 // alert(person.name+"|"+person.age); 14 } 15 16 var dog = { name: ‘xiaoquan‘, age: 3, master: { name: ‘china‘, renkou: 13 } }; 17 //alert(dog.name); 18 //alert(dog.master.renkou); 19 20 /* 21 var dog2 = { name: ‘xiaoquan‘ }; 22 var p2 = { name: ‘china‘, renkou: 13 }; 23 dog2.master = p2;*/ 24 25 //json的标准就是js中字典、数组的格式。 27 var s = "{ name: ‘rupeng‘, age: 8 }";//ajax从服务器中"{ name: ‘rupeng‘, age: 8 }"这样一个字符串,怎么样取出name的值呢?首先要把这个字符串转换为JavaScript对象 28 // alert(s); 29 //alert(s.name); 30 var p2 = eval("(" + s + ")");//p2就是一个对象了{ name: ‘rupeng‘, age: 8 } 31 //eval把一个json格式的字符串解析为一个js对象 32 alert(p2.name); 33 var s = "[{ name: ‘rupeng‘, age: 8 }, { name: ‘baidu‘, age: 15 }, { name: ‘qq‘, age: 18 }]"; 34 var persons = eval("("+s+")");//eval()动态运行JavaScript 35 for (var i = 0; i < persons.length; i++) { 36 var person = persons[i]; 37 alert(person.name+"|"+person.age); 38 } 39 </script>
1 int[] nums = new int[] {3,5,89}; 2 JavaScriptSerializer jss = new JavaScriptSerializer(); 3 string json = jss.Serialize(nums); 4 context.Response.Write(json);
1 $.ajax({ 2 type: "post", url: "Ajax1.ashx", 3 data: { i1: $("#txt1").val(), i2: $("#txt2").val() }, 4 success: function (data, txtStatus) {alert(data);}, 5 error: function () { alert("错误"); } 6 });
三种Json装换JavaScript的方法:
1 var nums = $.parseJSON(resTxt);//json字符串转换为javascript对象
1 $.ajax({ 2 type: "post", url: "JQueryAJAXTest1.ashx", 3 dataType:"json", 4 data: { i1: 10, i2: 3 }, 5 success: function (nums) { 6 //如果把dataType设置为"json",那么success的第一个参数就是json转换后的JavaScript对象,不需要再手动parseJson 7 for (var i = 0; i < nums.length; i++) { 8 alert(nums[i]); 9 } 10 }, 11 error: function () { 12 alert("ajax出错"); 13 }
1 context.Response.ContentType = "application/json";//C#
如果表单元素放到form中,并且按照http的标准(有name等)设置,那么$("#form1").serializeArray()就可以得到一个键值对数组,把这个值赋值给$.ajax的data属性。
标签:
原文地址:http://www.cnblogs.com/Tan-sir/p/4725770.html