ajax jsonp实例
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于ajax jsonp实例内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在ajax jsonp实例相关知识领域提供全面立体的资料补充。同时还包含 android、a href、abap 的知识内容,欢迎查阅!
ajax jsonp实例相关知识
-
ajax跨域请求之JSONP的使用之前在工作中遇到了跨域访问的问题,此次记录使用json的过程。注意:jsonp只适合类型为get的请求;只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。 $.ajax({ type:"get", //请求方式,此处给post仍会以get方式提交 dataType:"jsonp",//预期服务器返回的数据类型 jsonp:"callback",//在一个jsonp请求中重写回调函数的名字 jsonpCallback:"callback",//为jsonp请求指定一个回调函数名 url:"http://127.0.0.1/login", //请求地址 data:"{name:'
-
就算你懂了JSONP,那你又懂AJAX吗? 上篇文章我们说到了什么是JSONP以及JSONP的用法,但说到底,JSONP终究只是一种以脚本的形式来运行的方法,并且,它只能向服务器发送GET请求,原则上不能发送其他如POST、PUT的请求的。因此在这里向大家隆重推出AJAX。 什么是AJAX,我们可以先把这四个英文字母拆分开来,他们分别代表的意思为:A(Asynchronous——异步的)、J(JavaScript)、A(And)、X(XML) 简单地说一下AJAX的起源和背景:IE5时率先在JavaScript中引入了ActiveX对象(API),使得JavaScript可以直接发起HTTP请求,随后被多个浏览器跟进和模仿后,最后W3C给这个API取名为XMLHttpRequest,并正式纳入W3C规范。 顺便提一下,在XMLHttpRequest纳入W3C规范的一年后,Google利用
-
跨域请求之jQuery的ajax jsonp的使用解惑 前天在项目中写的一个ajax jsonp的使用,出现了问题:可以成功获得请求结果,但没有执行success方法,直接执行了error方法提示错误——ajax jsonp之前并没有用过,对其的理解为跟普通的ajax请求差不多,没有深入了解;出现了这种错误,几经调试(检查后台的代码和js部分的属性设置)还是不行,让我感觉很是意外和不解。于是,决定仔细研究下ajax jsonp的使用,并将最后测试成功的学习经验和大家分享下! 首先,贴出可以成功执行的代码: (页面部分) 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t
-
AJAX 跨域请求 - JSONP获取JSON数据同一个url,使用普通的http请求和使用Ajax请求时,在请求头里有一个字段不同。Ajax请求普通http请求可见如果 Ajax请求,请求头中多了一个字段X-Requested-With:XMLHttpRequest通过这个字段阻止跨域请求。JSONP是一种跨域交换协议,具体介绍网上很多,这里记录一个例子<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head>
ajax jsonp实例相关课程
ajax jsonp实例相关教程
- 3.1 JSONP JSONP 是一个非常经典的解决跨域的方法。我们知道,在 HTML 中,一些资源的引用事实上是不会受到跨域限制的,比如 script 标签。浏览器在解析 HTML 的时候,解析到了 script 标签,会把相应的资源下载下来。我们可以利用这一点,来实现前后端信息的交互。3.1.1 JSONP 原理定义好回调函数,比方说命名为 callback ,并将函数名作为 url 的参数;添加 script 标签,指定的资源为目标域的方法,也就是上面的 url ;后端接收 GET 请求,返回 callback(responseData) 格式数据,把要返回的数据 responseData 传到 callback() 中;前端接收 javaScript 内容,执行了后端返回的 callback(responseData) ,这样就完成了一次前后端交互了。3.1.2 具体例子假如 HTML 有一个容器为 container,我们要通过 JSONP 的方式来为 container 插入一条内容,那么,我们可以这么做:3.1.2.1 HTML 关键代码<div id="container"></div>3.1.2.2 javaScript 关键代码// jsonp// 定义一个添加内容的回调函数window.addContent = function (content) { document.getElementById('container').innerHTML = content;}/*** 发送 JSONP 请求的函数* cb 为回调函数的函数名*/function sendJsonPRequest (cb) { // 创建 script 标签 const body = document.getElementsByTagName('body')[0]; const script = document.createElement('script'); script.type = 'text/javascript'; // 指定标签的 url ,callback 参数为回调函数的函数名 script.src = `http://localhost:8082/jsonp/get?callback=${cb}`; body.appendChild(script); // 添加到 body 最后面}sendJsonPRequest('addContent') // 执行发送 JSONP 请求显而易见,前端我们会创建一个 script 标签,并且附带定义好的回调函数的函数名传给服务端。与此同时,我们需要在服务端进行 JSONP 请求的响应。3.1.2.3 服务端关键代码router.get("/jsonp/get", function(req, res) { const cb = req.query.callback; // 读取请求附带的参数 callback const resData = '这是一条服务端返回的内容'; res.send(`${cb}(${JSON.stringify(resData)})`); // 返回 callback(resData) 格式的数据});3.1.2.4 效果从右边控制台可以看出来,我们成功创建了 JSONP 的请求,并且结果正如我们预期的执行了 addContent('这是一条服务端返回的内容'),界面上展示出插入的内容。3.1.3 JSONP 小结使用 JSONP 的方式,我们可以通过 script 标签绕过浏览器的跨域限制,进行前后端数据交互。不过另一方面,这种方法也很有局限性,我们只能够发送 GET 请求,无法满足更加复杂业务的需求。一般我们也不会推荐直接使用 JSONP 的方式来解决跨域问题。
- Ajax 前后端交互例子 前面的章节,我们主要从什么是 Ajax、为什么要用 Ajax、Ajax 是如何实现的以及如何封装一个 Ajax来对 Ajax 做一个多方位的学习。从前面章节的学习中,相信同学们对 Ajax 都会有一个比较完整的概念了。那么,接下来的这个章节,我们着重列举一个示例,来讲述 Ajax 是如何进行前后端交互的。
- 实现 ajax function ajax(options) { const { url, method, data, params, success, error } = options; const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { // readyState为4的时候已接收完毕 if (xhr.readyState === 4) { // 状态码200表示成功 if (xhr.status === 200) { console.log(xhr.responseText); success.call(this, xhr.responseText); } else { console.log(xhr.status); error.call(this, xhr.status) } } }; // get 请求 if (method === 'get' || method === 'GET') { if (typeof params === 'object') { // params拆解成字符串 params = Object.keys(params).map(function (key) { return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]); }).join('&'); } url = params ? `${url}?${params}` : url; xhr.open(method, url, true); xhr.send(); } // post 请求 if (method === 'post' || method === 'POST') { xhr.open(method, url, true); xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); xhr.send(JSON.stringify(params)); }}使用 promise 进行封装function ajax(url, method, params) { return new Promise((resolve, reject) => { // 创建XMLHttpRequest对象 const xhr = new XMLHttpRequest(); // 状态改变时的回调 xhr.onreadystatechange = function () { // readyState为4的时候已接收完毕 if (xhr.readyState === 4) { // 状态码200表示成功 if (xhr.status === 200) { resolve(xhr.responseText); } else { reject(xhr.status); } } }; // ... });}
- 3.$.ajax 事实上, load 属于基于 $.ajax 再次封装的一个简易的 API 。有兴趣的同学可以去扣一下源码来看看。大概实现就是这样:jQuery.fn.load = function( url, params, callback ) { var selector, type, response, self = this, off = url.indexOf( " " ); // xxx // If we have elements to modify, make the request if ( self.length > 0 ) { jQuery.ajax( { // xxx } ).done( function( responseText ) { // xxx } ).always( callback && function( jqXHR, status ) { // xxx } ); } return this;};这里我隐去了一些具体实现,目的只是为了说明 load 内部的基本实现是怎么样的即可。对具体实现有兴趣的同学可以自行读一下源代码。事实上,load 的定制化相对较高,必定无法满足更为灵活的需求。因此,我们多数时候会使用 jQuery 封装好的更为底层的 API —— $.ajax。
- 2. 创建 Ajax 有了 xhr ,我们当然希望 Ajax 能够提供一些默认配置。这里的 Ajax 函数不做太过复杂的功能,但我们会简单模拟支持默认 config。事实上,最后在 Ajax 中,内部调用的就是 xhr 函数。类似这个样子:function Ajax(config) { // code ... return xhr(config);}
- 3.1 配置 Ajax function ajaxError(){ alert('ajax error');}function ajaxSuccess(result){ if (result.error) { alert('操作失败'); return; } location.reload();}客户端使用 ajax 技术请求服务端的服务。当 ajax 请求失败时,调用 ajaxError,提示用户 ajax 请求服务失败;当 ajax 请求成功时,调用 ajaxSuccess,提示用户 ajax 请求服务成功。
ajax jsonp实例相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener