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

通过jquery的jsonp的方式.使用此方式,对服务器端有要求.
 服务器端如下:
    
        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的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax请求数据不能正常访问的问题

IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决

用jquery $.ajax 请求后台老是url %5Bobject%20Object%5D而报404错误,为啥?

ajax请求不能下载文件(转载)

HTTP跨域时为何要发送options请求

2020.02.05 Ajax请求的安全