jquery+json的6种ajax请求

简介:

跨域的方法

JSONP跨域GET请求
通过iframe实现跨域
flash跨域HTTP请求
window.postMessage

header实现跨域

serialize序列表表格内容为字符串,不支持form嵌套中的子form

HTML代码:

Java代码   收藏代码
  1. <form id="myform">  
  2. 姓名:<input type="text" name="name" size="10" />  
  3. 性别:<input type="radio" name="sex" value="男" />男  
  4. <input type="radio" name="sex" value="女" />女  
  5. <input type="submit" value="ok" />  
  6. </form>  
  7. <div id="rename"></div>  
  8. <div id="resex"></div>  
  9. <div id="re" style="display:none"></div>  

 show.php代码:

Java代码   收藏代码
  1. <?php  
  2. header("Cache-Control: no-cache, no-store, must-revalidate, max-age=-1");  
  3. header("Content-Type: application/json; charset=utf-8");  
  4. $user['name']="姓名:".$_REQUEST['name'];  
  5. $user['sex']="性别:".$_REQUEST['sex'];  
  6. echo json_encode($user);  
  7. ?>  

 第一种方式:1、jQuery.ajax(options) 可以实现同步

Java代码   收藏代码
  1. <script type="text/javascript">  
  2.     $(document).ready(function () {  
  3.         $(":submit").click(function () {  
  4.             var str = $("#myform").serialize();  
  5.             $.ajax({  
  6.                 url:"show.php",  
  7.                 type:"post",  
  8.                 data:str,  
  9.                 dataType:"json",  
  10.                 timeout:1000,  
  11.                 error:function () {  
  12.                     alert("ajax error!");  
  13.                 },  
  14.                 success:callback  
  15.             });  
  16.             return false;  
  17.         });  
  18.     });  
  19.     function callback(jsondata) {  
  20.         $("#rename").html(jsondata.name);  
  21.         $("#resex").html(jsondata.sex);  
  22.     }  
  23. </script>  

 第二种方式:2、load(url,data,callback)

Java代码   收藏代码
  1. <script type="text/javascript">  
  2. $(document).ready(function(){  
  3.     $(":submit").click(function(){  
  4.         var str=$("#myform").serialize();  
  5.         $("#re").load("show.php",str,function(jsondata){  
  6.             data=eval("("+jsondata+")");  
  7.             $("#rename").html(jsondata.name);  
  8.             $("#resex").html(jsondata.sex);  
  9.         });  
  10.         return false;  
  11.     });  
  12. });  
  13. </script>  

load方式可以在url后面加选择器的,语法形如 "url #some > selector",但这里的例子返回的数据是json格式,所以就不能加选择器,这里只是为了演示,所以就用一个隐藏的div来载入json数据,然后 在回调函数里显示出来,在实际项目中是不会这样整的。。。

 

第三种方式:3、jQuery.get(url,data,callback,type)

Java代码   收藏代码
  1. <script type="text/javascript">  
  2. $(document).ready(function(){  
  3.     $(":submit").click(function(){  
  4.         var str=$("#myform").serialize();  
  5.         $.get("show.php",str,function(jsondata){  
  6.             $("#rename").html(jsondata.name);  
  7.             $("#resex").html(jsondata.sex);  
  8.         },"json");  
  9.         return false;  
  10.     });  
  11. });  
  12. </script>  

 第四种方式:4、jQuery.getJSON(url,data,callback) 异步请求

Java代码   收藏代码
  1. <script type="text/javascript">  
  2. $(document).ready(function(){  
  3.     $(":submit").click(function(){  
  4.         var str=$("#myform").serialize();  
  5.         $.getJSON("show.php",str,function(jsondata){  
  6.             $("#rename").html(jsondata.name);  
  7.             $("#resex").html(jsondata.sex);  
  8.         });  
  9.         return false;  
  10.     });  
  11. });  
  12. </script>   

getJSON还可以通过JSONP协议来进行跨域调用数据。只要用jsonp方式就只能是get,因为本质是script方式加载的一个简单的例子:

a站www.a.com 下放置一个调用页面client.html,代码:

Java代码   收藏代码
  1. <script type="text/javascript">  
  2. $.getJSON("http://www.b.com/server.php?name=jackie&sex=boy&callback=?",function(data){  
  3.     alert(data.name+" "+data.sex);  
  4. });  
  5. </script>  

 b站www.b.com 下放置返回json的php文件 server.php,代码:

Java代码   收藏代码
  1. <?php  
  2.     $name=$_REQUEST['name'];  
  3.     $sex=$_REQUEST['sex'];  
  4.     $jsondata="{name:'".$name."',sex:'".$sex."'}";  
  5.     echo $_GET['callback']."(".$jsondata.")";  
  6. ?>  
Java代码   收藏代码
  1. callback({name:'this is json data',sex:'男'})  

 header实现跨域

Server.php代码   收藏代码
  1. <?php  
  2. // ajax通过设置Access-Control-Allow-Origin来实现跨域访问比较简单.指定允许其他域名访问  
  3. header('Access-Control-Allow-Origin:*');  
  4. // 响应类型  
  5. header('Access-Control-Allow-Methods:POST, GET, OPTIONS');  
  6. // 响应头设置  
  7. header('Access-Control-Allow-Headers:x-requested-with,content-type');  

 

第五种方式:5、jQuery.post(url,data,callback,type)

Java代码   收藏代码
  1. <script type="text/javascript">  
  2. $(document).ready(function(){  
  3.     $(":submit").click(function(){  
  4.         var str=$("#myform").serialize();  
  5.         $.post("show.php",str,function(jsondata){  
  6.             $("#rename").html(jsondata.name);  
  7.             $("#resex").html(jsondata.sex);  
  8.         },"json")  
  9.         return false;  
  10.     });  
  11. });  
  12. </script>  

 第六种方式:jQuery.getScript(url,[callback])

Js代码   收藏代码
  1. <html>  
  2. <head>  
  3. <title>JQuery学习</title>  
  4. <script src="jquery-1.2.6.min.js" type="text/javascript"></script>  
  5. <script type="text/javascript">  
  6. $(document).ready(function(){  
  7.     var oBtnTest = $("#btnTest");  
  8.     oBtnTest.click(function(){  
  9.         oBtnTest.disabled = true;  
  10.         var oResult = $("#result");  
  11.         oResult.html("loading").css("color","red");  
  12.         jQuery.getScript("http://app.cntvs.com/test/js.txt",  
  13.         function(){  
  14.             oResult.html("name:" + jimmy.name + "<br/>email:" + jimmy.email).css("color","black");  
  15.             oBtnTest.disabled = false;  
  16.         });  
  17.     });  
  18. });  
  19. </script>  
  20. </head>  
  21. <body>  
  22. <button id="btnTest">BtnTest</button>  
  23. <div id="result"></div>  
  24. </body>  
  25. </html>  

 远程服务器端js.txt的内容为:
var jimmy = {name:"jimmy.yang",email:jimmy.yang@163.com}

getScript是通过 HTTP GET 请求载入并执行一个 JavaScript 文件。很简单,而且在当前的例子中不适用,所以略过。 ps:php判断是否为ajax请求可以用$_SERVER['HTTP_X_REQUESTED_WITH'],如 if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest') return true; }

相关文章
|
3月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
9月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
XML 前端开发 JavaScript
|
XML JSON 安全
SSM:请求参数与回显&json
本文介绍了请求参数处理、过滤器和拦截器的使用方法。包括如何通过 `@RequestParam` 和 `@ModelAttribute` 绑定请求参数,使用 Lombok 简化实体类开发,实现过滤器处理字符编码,以及配置拦截器进行请求前后的处理。同时,还展示了如何使用 `@ResponseBody` 返回 JSON 数据,并解决了 JSON 编码问题。
193 0
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
255 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
187 22
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
116 18
|
12月前
|
JSON 前端开发 JavaScript
Python中如何判断是否为AJAX请求
AJAX请求是Web开发中常见的异步数据交互方式,允许不重新加载页面即与服务器通信。在Python的Django和Flask框架中,判断AJAX请求可通过检查请求头中的`X-Requested-With`字段实现。Django提供`request.is_ajax()`方法,Flask则需手动检查该头部。本文详解这两种框架的实现方法,并附带代码示例,涵盖安全性、兼容性、调试及前端配合等内容,帮助开发者提升Web应用性能与用户体验。
209 0
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
245 4
|
JSON API 数据格式
postman如何发送json请求其中file字段是一个图片
postman如何发送json请求其中file字段是一个图片
520 4