ajax请求 为何老是 返回error
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax请求 为何老是 返回error相关的知识,希望对你有一定的参考价值。
var url = "https://127.0.0.1:3000/idmp/validateUserInfo";
var jsonData = "";
jsonData = "username":username,"authType":
"MA","Issuer":"sso",
"AssertionConsumerServiceURL":"asas",
"RelayState":"123321";
$.ajax(
url:url,
type:"get",
data:jsonData,
beforeSend:function()
//这里是开始执行方法,显示效果,效果自己写
,
complete:function()
//方法执行完毕,效果自己可以关闭,或者隐藏效果
,
success:function(data)
//数据加载成功
if(data.ResultCode == 101106)
//到新页面
location.href=basePath+'index?mobileNumber='+username;
if(data.ResultCode == 101107)
// $("#maUsernameException").text("sim卡认证失败 ");
alert("sim卡认证失败");
if(data.ResultCode == 101108)
alert("sim卡认证超时,请重新认证 ");
if(data.ResultCode == 101118)
// $("#maUsernameException").text("您的手机暂不支持一键登录 ");
alert("您的手机暂不支持一键登录 ");
,
error:function()
//数据加载失败
// $("#upUsernameException").text("请求失败,请稍后重试!");
alert("请求失败,请稍后重试! ");
);
这是我的请求方法,请求的是服务器上的一个接口 , 接口有响应,接口请求成功 服务器上面是有日志打印的没有报错,但是老是执行error
服务器端如下:
protected void Page_Load(object sender, EventArgs e)
string callback = Request.QueryString["jsoncallback"];
string result = callback + "(\\"name\\":\\"zhangsan\\",\\"date\\":\\"2012-12-03\\")";
Response.Clear();
Response.Write(result);
Response.End();
客户端:
$.ajax(
async: false,
url: "http://192.168.0.5/Web/web1.aspx",
type: "GET",
dataType: 'jsonp',
//jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.
jsonp: 'jsoncallback',
//要传递的参数,没有传参时,也一定要写上
data: null,
timeout: 5000,
//返回Json类型
contentType: "application/json;utf-8",
//服务器段返回的对象包含name,data属性.
success: function (result)
alert(result.date);
,
error: function (jqXHR, textStatus, errorThrown)
alert(textStatus);
);
实际上,在我们执行这段js时,js向服务器发出了这样一个请求:
http://192.168.0.5/Web/web1.aspx?jsoncallback=jsonp1354505244726&_=1354505244742
而服务器也相应的返回了如下对象:
jsonp1354506338864("name":"zhangsan","date":"2012-12-03")
此时就实现了跨域范文数据的要求.
参考:http://www.cnblogs.com/oneword/archive/2012/12/03/2799443.html
参考技术A 是不是js跨域的问题?用url可以访问,但是用ajax调用会出错,很有可能是跨域了。追问确实是跨域的问题 则个我知道 但是有没有解决的方案呢? 急求解决方案
追答使用jsonp的方法跨域调用获取返回值,可以百度,教程很详细。
参考技术B 在同域的服务器做一个简单的代理转发请求,即可避免跨域问题ajax
jquery里面的ajax
$.ajax({
url: 必须填,请求的地址
data: 请求的数据类型
type: 请求的方式 get|post 默认get
dataType: 服务器数据类型 html JSON JSONP text XML
async: 同步异步 默认异步 true
success:function(){}, 请求成功,返回的函数
error:function(){} 请求失败,返回的函数
})
简写
$.ajax({
url:
success:function(){}
})
获取ajax失败:
1.自己造一个简单的json,看是否是json的问题
2.检查自己ajax代码写的是否有问题
$.get(url,function(){}) 以get请求的方式去获取数据
$.post(url,function(){}) 以post请求的方式去获取数据
$.getJSON(url,function(){}) //以get形式获取json数据,可以获取普通的数据,也可以获取跨域数据
$.ajax 可以替换 $.get $.post $.getJSON
3.json 数据格式
数据包对象 [{},{},{}]
对象包数组
{
“code”:301,
data:[],
"info":success
}
如何创建一个json
有共同点的数据,可以创建成json
没有共同点,找他们之间的关系创建
JSONP:是解决大多数浏览器跨域的一种方式
原理:借助script来解决跨域问题
实现方式:动态创建script,给src赋值一个跨域地址来获取跨域的内容
同源:url是由协议、域名、端口号、地址四部分组成,两个url协议、域名、端口号三个完全相同同源
协议:http https file
同源策略:
不同浏览器的"document"或脚本不允许操作本浏览器的document或脚本(读取或者赋值)
以上是关于ajax请求 为何老是 返回error的主要内容,如果未能解决你的问题,请参考以下文章
IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决