JSONP跨域函数的手工实现

前端之家收集整理的这篇文章主要介绍了JSONP跨域函数的手工实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

效果

当前文件地址为http://127.0.0.1:8080/

所请求的文件地址和参数为http://127.0.0.1:3000/sendjsonp?name=likeke&age=18&cb=callback1470904676170

直接上代码吧:

index.html

  1. <!DOCTYPE html>
  2.  
  3. <html lang="en">
  4.  
  5. <head>
  6. <Meta charset="UTF-8">
  7. <title>Document</title>
  8. </head>
  9.  
  10. <body>
  11. <p>姓名:<input type="text" name="" id="myname"></p>
  12. <p>年龄:<input type="text" name="" id="myage"></p>
  13. <input id="send" type="button" value="请求发送">
  14. </body>
  15.  
  16. </html>
  17. <script>
  18. var newjsonp=function(url,data,callback){
  19. /*需要发送的参数值*/
  20. var queryString = url.indexOf('?') == -1 ? '?' : '&';
  21. /*允许只传入两个参数*/
  22. if (3 == arguments.length) {
  23. for (var item in data) {
  24. queryString += item + '=' + data[item] + '&';
  25. }
  26. }else if(2 == arguments.length){
  27. callback=data;
  28. }
  29. /*为防止变量冲突,给函数加上时间戳*/
  30. var callbackName='callback'+(new Date().getTime());
  31. /*将回调函数暴露到全局*/
  32. window[callbackName]=function (data) {
  33. callback(data);
  34. /*为了防止多次请求就会创建多个script节点的问题,此处先删除前一个创建的节点*/
  35. document.body.removeChild(scriptEle);
  36. };
  37. queryString+='cb='+callbackName;
  38. /*创建script节点,同时会发出请求*/
  39. var scriptEle=window.document.createElement('script');
  40. scriptEle.src=url+queryString;//请求参数
  41. window.document.body.appendChild(scriptEle);
  42. }
  43.  
  44. send.onclick=function(){
  45. newjsonp('http://127.0.0.1:3000/sendjsonp',{
  46. name:'likeke',age:18
  47. },function(data){
  48. myname.value=data.name;
  49. myage.value=data.age;
  50. });
  51. }
  52. </script>

后端代码(nodejs)

  1. var express = require('express');
  2. var app = express();
  3.  
  4. app.get('/sendjsonp',function (req,res) {
  5. var name=req.query.name,age=req.query.age,callback=req.query.cb;
  6. var data={
  7. 'name':name,'age':age
  8. }
  9. res.send(callback+'('+JSON.stringify(data)+')');
  10. });
  11.  
  12. var server = app.listen(3000);

猜你在找的Json相关文章