JS Ajax 请求实例详解(基础入门篇,以.NET MVC 为例)
2017-01-20 16:48
495 查看
本文主要简单介绍一下JS 的ajax请求,以及涉及到的跨域问题,配合简单的实例,让新手直接上手使用。另外,重点介绍一下,.NET MVC HTML 工具类 和 Ajax工具类的使用。(使用特别方便)
代码很简单,宝贝儿们可以直接粘着用。
前端
如果你想使用 JS 的原生请求,那就用这个。
若是跨域请求,JS ajax 请求是无法完成的,需要依靠标签src属性来完成,下面同样也列出JS 原生跨域请求代码
若不理解可以参考: 同源策略与跨域请求
JS 原生跨域代码
服务端代码:
note: 如果你的服务端 和你的前端不同一“域”下的话,就不能使用 JS原生异步请求了,会出现跨域问题。也就是我在前端代码中,提到的问题。
无论我们采用哪一种跨域方式(JSONP,CORS,代理层)都要服务端配合才行。比如JSONP方式,就需要服务端返回指定 格式的数据(JSONP格式,也就是要返回一个方法名,返回的数据作为参数,响应回来),如果说使用Cors解决方案,就需要在配置文件中,打开跨域请求,大家想了解,可以参考这篇文章。
同源策略与JS跨域请求(图文实例详解)
想了解JSONP 的原理,可以参考这篇文章,佩服该博主,讲的非常清楚。
说说JSON和JSONP,也许你会豁然开朗
Ajax与JSON的一些总结
其实JSONP的实现原理,就是利用了 src 获取跨域的内容,而服务端返回了一段可执行JS方法,要返回的数据,也作为该方法的参数,传了回来,而如果恰好我们本地有这个方法,就执行了该方法,我们也就获取到了方法的参数(也就是我们需要的服务器端数据),也就完成了跨域。
这样其实就像上面博文中博主提到的,这种方式,已经不再是真正的异步请求了。
这个地方,大家可能会有疑问,我在使用Jquery ajax JSONP跨域的时候,没有在本地写方法呀,为什么也成功了呐?
答:这都是jquery 将这些工作给做了,jquery在处理jsonp类型的ajax时,自动帮你生成回调函数并把数据取出来供success属性方法来调用。
.Net MVC的ajax辅助方法和html辅助方法,内容有点多,下一篇文章,我们再详细的介绍一下它们详细的用法。
ajax 辅助方法,可以让我们省掉 好几行的JS代码,用起来更加方便。如果说我们再配合 MVC的分部视图,这样我们可以不再拼接字符串,直接返回一个视图,而且使用这样的分部视图,不仅实现了公用模块的通用,而且我们同步与异步可以共用一个视图也将实现。也就是html辅助方法和ajax辅助方法的使用,下一篇文章我们将详细的介绍一下这两个方法。
JS Ajax实例
通常,我们很少去使用JS原生的语法,去写ajax请求,因为Jquery 做了封装,直接使用jquery传几个参数,会特别好用。但是在这两,两种代码,我都写了一下。可以对比参考一下。代码很简单,宝贝儿们可以直接粘着用。
前端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax测试</title> <script src="script/jquery-1.7.1.js"></script> </head> <body> <input id="AjaxBtn" type="button" value="测试Ajax"/> <div> <p>返回结果:<span id="resultView"></span></p> </div> <script type="text/javascript"> $(function () { $('#AjaxBtn').click(function () { $.ajax({ url:"http://****/ask/AJAXTest/AjaxAction.do",//此处换成你的服务端地址 type:"Post", data:{}, dataType:"jsonp",//jsonp 实现跨域 jsonpCallback:"fun",//服务器返回执行的方法名 success:function (data) { console.log("success"); $('#resultView').html(data.msg);//将返回信息填入页面 }, error:function (err) { console.log("error!!!!"); } }); }); }); </script> </body> </html>
如果你想使用 JS 的原生请求,那就用这个。
若是跨域请求,JS ajax 请求是无法完成的,需要依靠标签src属性来完成,下面同样也列出JS 原生跨域请求代码
若不理解可以参考: 同源策略与跨域请求
var xmlhttp = new XMLHttpRequest(); xmlhttp.open("get","http://*****/AJAXTest/AjaxRequest.do",true); xmlhttp.send(); xmlhttp.onreadystatechange = function () { if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ $('#resultView').html(xmlhttp.responseText); } }; //语法很简单,详情可参考: [Ajax语法](http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_create.asp)
JS 原生跨域代码
var url = "http://newask.fang.com/ask/AJAXTest/AjaxAction.do?city=bj&callback=fun"; // 创建script标签,设置其属性 var script = document.createElement('script'); script.setAttribute('src', url); // 把script标签加入head,此时调用开始 document.getElementsByTagName('head')[0].appendChild(script);
服务端代码:
public string AjaxAction() { string callback = string.Empty; if (string.IsNullOrEmpty(Request.QueryString["callback"])) { callback = "callback"; } else { //接收Callback参数,jquery ajax 在不使用JSONP:{funName}的时候,默认是Callback callback = Request.QueryString["callback"]; } return callback + "({\"msg\":\"success\"})"; //拼接返回格式,应该序列化JSON数据,此处仅为Demo,就简单的拼接了一下 }
note: 如果你的服务端 和你的前端不同一“域”下的话,就不能使用 JS原生异步请求了,会出现跨域问题。也就是我在前端代码中,提到的问题。
无论我们采用哪一种跨域方式(JSONP,CORS,代理层)都要服务端配合才行。比如JSONP方式,就需要服务端返回指定 格式的数据(JSONP格式,也就是要返回一个方法名,返回的数据作为参数,响应回来),如果说使用Cors解决方案,就需要在配置文件中,打开跨域请求,大家想了解,可以参考这篇文章。
同源策略与JS跨域请求(图文实例详解)
想了解JSONP 的原理,可以参考这篇文章,佩服该博主,讲的非常清楚。
说说JSON和JSONP,也许你会豁然开朗
Ajax与JSON的一些总结
其实JSONP的实现原理,就是利用了 src 获取跨域的内容,而服务端返回了一段可执行JS方法,要返回的数据,也作为该方法的参数,传了回来,而如果恰好我们本地有这个方法,就执行了该方法,我们也就获取到了方法的参数(也就是我们需要的服务器端数据),也就完成了跨域。
这样其实就像上面博文中博主提到的,这种方式,已经不再是真正的异步请求了。
这个地方,大家可能会有疑问,我在使用Jquery ajax JSONP跨域的时候,没有在本地写方法呀,为什么也成功了呐?
答:这都是jquery 将这些工作给做了,jquery在处理jsonp类型的ajax时,自动帮你生成回调函数并把数据取出来供success属性方法来调用。
.Net MVC的ajax辅助方法和html辅助方法,内容有点多,下一篇文章,我们再详细的介绍一下它们详细的用法。
ajax 辅助方法,可以让我们省掉 好几行的JS代码,用起来更加方便。如果说我们再配合 MVC的分部视图,这样我们可以不再拼接字符串,直接返回一个视图,而且使用这样的分部视图,不仅实现了公用模块的通用,而且我们同步与异步可以共用一个视图也将实现。也就是html辅助方法和ajax辅助方法的使用,下一篇文章我们将详细的介绍一下这两个方法。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- 分享微信开发Html5轻游戏中的几个坑
- JavaScript演示排序算法
- 2015-2016网页设计趋势分析 Web Design of Trends
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- Ajax
- $.ajax()方法详解
- jQuery ajax - ajax() 方法
- 使用Ajax实现异步用户名验证
- 使用ajax实现用户登录验证(升级版)
- JQuery实例
- JavaScript 各种遍历方式详解
- 数组方法汇总
- 解决Ajax悬停效果,无法遮蔽FLASH的问题