ajax请求失败解决办法,Ajax跨越请求失败,解决

本文详细介绍了Ajax跨域请求的概念,包括不同域名和同一域名不同端口的情况。Ajax跨域请求时遇到的浏览器安全限制导致的失败,以及如何通过Jsonp技术来解决这一问题。Jsonp的工作原理是利用浏览器允许加载同源数据的特性,通过动态插入script标签来实现跨域数据获取。同时,文中还提到了在实际项目中遇到的.NET Core Ajax请求参数过大导致的失败问题,并给出了相应的解决策略。
摘要由CSDN通过智能技术生成

跨越请求

1.1什么是跨域(两个不同系统之间的访问、调用)

(1)域名不同,即两个不同的应用。

92ab3c0d6c99f04b4cd4a0c234fd8600.png

(2)域名相同,但是端口不同,即同一个应用中的不同子系统。

ba3702813131e33f7e0e1bd02a5b5621.png

1.2 Ajax跨域请求的缺陷

(1)创建testJsonp.jsp页面

pageEncoding="UTF-8"%>

Insert title here

function testajax(){

$.ajax({

url:"http://localhost:8081/category.json",

type: "GET",

success: function (data) {

$("#text").val(JSON.stringify(data));

}

});

}

1.3测试Ajax跨越

468caef9f2bdebbe1ab8aa3cd647cd60.png

测试发现,Ajax跨越请求失败了。

解决方案:jsonp跨域

在前面的测试中,我们发现Ajax跨越请求时,json数据被浏览器禁用了。

原因:浏览器禁止远程加载Json数据。(浏览器安全机制)

如何解决呢?

答:使用Jsonp方式。

2.1Jsonp原理

2.1.1Jsonp 实现的前提:

浏览器允许跨越加载同源数据。

即在JavaScript脚本中发送请求,就可以远程加载js格式数据。

2.1.2请求原理:

(1)异步请求的时候,加上一个名为callback的回调函数

(2)在接口中,将返回的json格式数据,伪装成js脚本格式。

(3)得到js格式数据后,提取里面的json数据。

d916a0741d2e7aed8d122410eb4a6e96.png

2.2 修改testJsonp.jsp,指定异步请求为jsonp方式。

function testajax(){

$.ajax({

url:"http://localhost:8081/category.json",

type: "GET",

dataType: "jsonp", //jsonp请求

jsonp:"callbackFunction", //请求参数名

jsonpCallback:"showData", //回调函数名称

success: function (data) {

$("#text").val(JSON.stringify(data));

}

});

}

2.3修改category.json文件,将返回数据包装成js脚本。

9799490aab8cae90729a24c13d53f586.png

2.4 再次发送ajax异步请求,使用jsonp方式

f1c9cf9be05f02e3d440bebb6c2c045b.png

结论:

(1)jsonp是ajax技术中的一种异步请求方式。

(2)jsonp能实现跨越请求。

(3)jsonp跨越时,需要指定一个回调函数,并使用该函数将返回的数据伪装成js脚本。

(4)获取返回的js脚本后,jsonp自动提取其中的json数据。

解决ant Design dva ajax跨越请求 (status=0)

今天实现了antd作为前端展现,python flask作为后端的数据填充,完全两个独立的服务:过程中遇到ajax跨越请求问题,导致status一直等于0,原来是这么写的: xmlhttp.open( ...

解决js ajax跨越请求 Access control allow origin 异常

// 解决跨越请求的问题 response.setHeader("Access-Control-Allow-Origin", "*");

Win10 设备管理器一个USB设备描述符请求失败解决方法

问题:进入设备管理器,发现[通用串行总线控制器]下有一项带有黄色[!]未知USB设备(设备描述符请求失败). 或者 解决方法如下: 1.点击Windows键 +R或者(点击系统桌面左下角[开始],在开 ...

毕设记录(ajax第一次请求失败,之后成功的问题)

解决方法:将button标签的type属性改为button,而不是submit,将会解决此问题,至于原因,,,还是没太搞清楚..

Android Http请求失败解决方法

1.MainActivity.java 文件中的onCreate方法改成如下: @SuppressLint("NewApi") @Override protected void o ...

.NET中Ajax跨越访问

说明:我们知道Ajax是不能进行跨域请求的,我们是可以设置我们的项目让Ajax支持跨域访问. 跨域: aa.xxx.com 中用ajax请求  bb.ccc.com中的数据成为跨域. 找了一些文章看了 ...

Django中ajax发送post请求,报403错误CSRF验证失败解决办法

今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了:很显 ...

解决.NET Core Ajax请求后台传送参数过大请求失败问题

解决.NET Core Ajax请求后台传送参数过大请求失败问题 今天在项目上遇到一个坑, 在.Net Core中通过ajax向mvc的controller传递对象时,控制器(controller)的 ...

随机推荐

Spring——集成JPA

配置文件如下: <?xml version="1.0" encoding="UTF-8"?&g ...

iOS安全—阻止tweak注入hook api

http://blog.csdn.net/zcrong/article/details/51617348 在Other Linker Flags中添加: -Wl,-sectcreate,__RESTR ...

优化MySchool数据库(一)

:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...

使用JavaScript

使用JavaScript 1.在HTML中的脚本必须位于和之间,脚本可以被放置在HTML页面的

或者

jquery之图片上传

linux会话命令screen详解

Screen会话命令 我其实是把文件下载到 /home/zhang/temp/ 里面,当我N久以后再联上服务器,想看看文件下载情况怎样,那又要 cd 老半天,这时候 screen 就是好帮手了. 顾名 ...

kindeditor使用方法

一.下载编辑器 下载KindEditor最新版本(本版本为4.1.10) 下载页面:http://kindeditor.net/down.php 二.部署编辑器 解压kindeditor-x.x.x. ...

&lbrack;Swift&rsqb;LeetCode944&period; 删除列以使之有序 &vert; Delete Columns to Make Sorted

We are given an array A of N lowercase letter strings, all of the same length. Now, we may choose an ...

微信小程序 数据绑定方式

与vue不同,在微信小程序中,js的数据和前端显示的数据是单数据流,也就是说,js里边的数据变了(通过setData),前端能立刻显示.但如果前端数据变了,js中的变量不能改变. 这个相比传统的前端已 ...

如何调试触发器-MSSQL &lpar;转帖&rpar;

调试触发器 //------------------------------------- 作者:四海为圈(原创) //------------------------------------- 1. ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值