`

JSONP跨域函数的手工实现

阅读更多

效果:

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

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

直接上代码吧:

index.html

 

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
<p>姓名:<input type="text" name="" id="myname"></p>
<p>年龄:<input type="text" name="" id="myage"></p>
<input id="send" type="button" value="请求发送">
</body>

</html>
<script>
     var newjsonp=function(url,data,callback){
        /*需要发送的参数值*/
        var queryString = url.indexOf('?') == -1 ? '?' : '&';
       /*允许只传入两个参数*/
        if (3 == arguments.length) {
		  for (var item in data) {
			  queryString += item + '=' + data[item] + '&';
		  }
	    }else if(2 == arguments.length){
		  callback=data;
	    }
        /*为防止变量冲突,给函数名加上时间戳*/
        var callbackName='callback'+(new Date().getTime());
        /*将回调函数暴露到全局*/
        window[callbackName]=function (data) {
            callback(data);
            /*为了防止多次请求就会创建多个script节点的问题,此处先删除前一个创建的节点*/
	    document.body.removeChild(scriptEle);
	};
        queryString+='cb='+callbackName;
        /*创建script节点,同时会发出请求*/
        var scriptEle=window.document.createElement('script');
        scriptEle.src=url+queryString;//请求参数
        window.document.body.appendChild(scriptEle);
    }

send.onclick=function(){
 newjsonp('http://127.0.0.1:3000/sendjsonp',{
        name:'likeke',
        age:18
    },function(data){
        myname.value=data.name;
        myage.value=data.age;
    });
}
</script>

 

 后端代码(nodejs)

 

var express = require('express');
var app = express();

app.get('/sendjsonp', function (req, res) {
    var name=req.query.name,age=req.query.age,callback=req.query.cb;
    var data={
        'name':name,
        'age':age
    }
    res.send(callback+'('+JSON.stringify(data)+')');
});

var server = app.listen(3000);

 

  • 大小: 126.8 KB
分享到:
评论

相关推荐

    html通过 ajax jsonp跨域请求接收和传送数据

    JSONP的核心思想是利用`&lt;script&gt;`标签的src属性可以跨域加载脚本的特点,通过动态创建`&lt;script&gt;`标签并指定一个可被服务器回调的函数名,服务器返回的脚本会调用这个函数并将数据作为参数传递。 **AJAX和JSONP跨域...

    JSONP跨域实现百度搜索功能(v1.0.0)

    在本项目"JSONP跨域实现百度搜索功能(v1.0.0)"中,我们将深入探讨如何利用JSONP技术来实现在网页上嵌入一个能够进行百度搜索的功能。 首先,我们需要理解为什么需要JSONP。浏览器的同源策略是出于安全考虑,不允许...

    jsonp跨域解决源代码

    2. JSONP原理:JSONP的基本思想是,服务器提供一个可以接受参数的JavaScript函数名,客户端在请求时传递这个函数名,服务器返回一个调用该函数并带有JSON数据的脚本,`&lt;script&gt;`标签加载这个脚本,从而实现跨域数据...

    jsonp跨域请求数据实现手机号码查询实例分析.docx

    ### JSONP 跨域请求数据实现手机号码查询实例分析 #### 前言 在现代Web开发中,跨域问题一直是前端开发者面临的一个常见难题。简单来说,由于浏览器的同源策略限制,当一个网页尝试从不同的源(即不同的协议、端口...

    jquery下利用jsonp跨域访问实现方法

    在JavaScript的世界里,由于同源策略的限制,浏览器禁止了不同源之间进行AJAX通信,但JSONP(JSON with Padding)作为一种巧妙的方式,允许我们绕过这个限制,实现在jQuery中进行跨域请求。本篇文章将深入探讨JSONP...

    ajax jsonp 跨域处理

    Ajax JSONP跨域处理是Web开发中的重要技术,通过JSONP,开发者可以在不违反同源策略的前提下实现跨域数据交互。虽然JSONP存在一些限制和安全隐患,但在许多场景下,它仍然是一个实用且有效的解决方案。随着技术的...

    ajax jsonp跨域传参

    ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口

    jquery下利用jsonp跨域访问实现方法.docx

    JSONP(JSON with Padding)...总之,JSONP是jQuery中实现跨域访问的一种常见方法,尤其在不支持CORS的旧浏览器环境中非常有用。但随着技术的发展,CORS已成为更推荐的跨域解决方案,因为它提供了更多的控制和安全性。

    利用jsonp跨域调用百度js实现搜索框智能提示

    标题提到的"利用jsonp跨域调用百度js实现搜索框智能提示",即利用JSONP技术调用百度提供的API,实现在搜索框中输入关键字时,显示智能提示的功能,类似于百度搜索引擎的自动补全。 **JSONP原理**: JSONP的工作机制...

    jsonp跨域请求实现示例

    - 创建一个`&lt;script&gt;`元素并设置其`src`属性为跨域资源的URL,并通过URL参数`jsonpCallback`指定上述定义的函数名。 - 将`&lt;script&gt;`元素插入到HTML文档中,当脚本加载完成时,浏览器会自动执行返回的函数,并将...

    原生ajax库实现jsonp跨域短小精悍

    本文将深入探讨如何使用原生JavaScript实现一个简单的AJAX库,特别关注JSONP的实现。 首先,理解JSONP的基本原理是关键。JSONP利用了HTML中`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建`&lt;script&gt;`元素并...

    JS 使用 JSONP 跨域获取用户IP

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性来实现JavaScript与服务器之间的通信。在JavaScript中,由于同源策略的限制,通常不能直接访问不同源的资源。但是...

    ASPNET_JSONP_demo(jq跨域)

    【ASP.NET JSONP 实现 jQuery 跨域】 在 Web 开发中,由于浏览器的同源策略限制,JavaScript 无法直接跨域访问数据。为了解决这个问题,开发者常常使用 JSONP(JSON with Padding) 技术。ASP.NET 和 jQuery 结合使用...

    跨域访问解决方法-jsonp

    本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`&lt;script&gt;`标签来绕过同源策略的技巧...

    ajax跨域CORS方案 JSONP跨域请求方案.zip

    本文将深入探讨两种主要的跨域解决方案:CORS(Cross-Origin Resource Sharing)和JSONP(JSON with Padding)。 ### CORS方案 CORS是一种现代浏览器支持的跨域策略,允许服务器声明哪些源可以访问其资源。服务器...

    jsonp跨域获取数据的基础教程.docx

    然而,JSONP提供了一种绕过这种限制的方法,使得前端开发者能够实现跨域请求。 ### JSONP原理 1. **函数定义**:在客户端,我们需要先在页面中定义一个函数,这个函数将会接收从服务器返回的数据。 2. **动态插入`...

    jsonpajax跨域请求

    JSONP(JSON with Padding)和AJAX是两种常见的在JavaScript中实现跨域数据请求的技术。在Web开发中,由于浏览器的同源策略限制,JavaScript不能直接向其他域名发送请求,但JSONP和AJAX通过特定的方式绕过了这个限制...

    原生JS封装Ajax插件(同域、jsonp跨域)-.docx

    原生JS封装Ajax插件(同域、jsonp跨域)_.docx

    原生JS封装Ajax插件(同域、jsonp跨域)-.pdf

    原生JS封装Ajax插件(同域、jsonp跨域)_.pdf

    AJax与Jsonp跨域访问问题小结

    AJAX与JSONP跨域访问问题小结 ...内容涵盖了从创建XMLHttpRequest对象,到使用AJAX发起异步请求,再到通过JSONP实现跨域访问的一系列知识点。对于开发者而言,这些内容都是实现现代Web应用中不可或缺的重要技术。

Global site tag (gtag.js) - Google Analytics