扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
是text文本数据。
成都创新互联服务项目包括广陵网站建设、广陵网站制作、广陵网页制作以及广陵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,广陵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到广陵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
$.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。
通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。
其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数。
注意,我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明text/xml 或者 application/xml 来获得一致的结果。
如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。
如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。
如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。
//php
header("Access-Control-Allow-Origin:*"); //设置允许任意域名发起的跨域请求
jquery自身的功能是不支持的,但是你可以基于jquery实现跨域post。
jquery本身只支持jsonp跨域,但是jsonp的原理限制了只能支持get。
如果想要实现原生jquery跨域,在你的请求地址的head里面加上Access-Control-Allow-Origin,值设置成调用该API的域名(或者*),优点是代码修改少,前端js代码无需任何改动。
或者用iframe + window.name方式,比较麻烦,后端前端都要改,优点是兼容性强。
或者用postMessage,优点是方便,缺点IE支持的不是很好。
POST跨域 解决方案: CORS
给服务端数据处理源码添加Header头。
例如是asp的语法,服务端获取数据使用:
%
Response.AddHeader "Access-Control-Allow-Origin", "*"
response.write("[{'rid':1, 'rname':'001'}, {'rid':2, 'rname': '002'}]")
%
本地ajax:
$.ajax({
url:url,//远程url
async :false,
type:"POST",
success:function(data){
//var a=JSON.parse(data);
var html = "";
alert(data);
},
error:function(){
alert("error");
}
});
没有办法解决,因为http请求不准ajax的post的跨域请求;
即使是jq封装的,规定之外的东西,它也办不到。
get方式是可以跨域请求的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流