ajax 可以加headers对象,例如:
成都创新互联专业提供绵阳机房托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买绵阳机房托管服务,并享受7*24小时金牌售后服务。
var settings = {
type: "GET",
url:url,
dataType:"jsonp"
error: function(XHR,textStatus,errorThrown) {
alert ("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
},
success: function(data,textStatus) {
$("body").append(data);
},
headers: {
"Referer":""
}
};
$.ajax(settings);
纯手打,望采纳!
这样是不行的,可以用jq的 .getScript方法。 获取服务端的js 里面包括服务端的域名,请求服务端方法 服务端response.write("这里调用已经得到的脚本中的方法 比如 alert('a')")
1.通过中间过渡层解决跨域问题
(1)通过Web代理服务器将不同域的应用统一通过代理服务器进行隔离,所有的应用都在一个域名下面了。(比如apache,nginx等)
(2)跨域的安全限制都是指浏览器端来说的.服务器端是不存在跨域安全限制的,所以通过本机服务器端通过类似httpclient方式完成“跨域访问”的工作。
2.通过script标签解决跨域问题
注意:凡是拥有"src"这个属性的标签都拥有跨域的能力,比如script、img、iframe
示例:
前台脚本:
Java代码
script type="text/javascript"
var flightHandler = function(data){
alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
};
var url = ";callback=flightHandler";
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
/script
后台data.jsp内容:
Java代码
%@ page language="java" pageEncoding="UTF-8"%
%
String callback = request.getParameter("callback");
StringBuilder builder = new StringBuilder();
builder.append(callback).append("({").append("\"code\": \"CA1998\",").append("\"price\": 1780,").append("\"tickets\": 5").append("});");
out.println(builder.toString());
%
使用jquery的jsonp来实现跨域访问,例子如下:
Java代码
script type="text/javascript"
$(function(){
$.ajax({
type: "get",
async: false,
url: "",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback:"flightHandler",
success: function(json){
alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。');
},
error: function(){
alert('fail');
}
});
});
/script
Ajax请求一个目标地址为非本域(协议、域名、端口任意一个不同)的web资源,并根据响应获得外部应用数据。比如我们用Ajax访问城市天气预报、IP地址等公共服务接口时,就涉及跨域了。我们请求一个外部服务时,浏览器会基于安全问题拒绝授权访问。而script、script、iframe标签的src属性就不存在跨域的问题,所以Ajax跨域就是利用这一点以及js对JSON的支持,外部服务只要给Ajax的请求响应一段JS代码或JSON数据,就能被Ajax获取到。
比如jquery的getScript
$.getScript("//pv.sohu.com/cityjson",function(){//前面加上http
//这个服务给响应的js代码为
//returnCitySN = {cid: "110000", cip: "124.xxx.22.xxx", cname: "北京市"}
//回调函数执行前,外部服务给响应的js代码已被加载到本地,所以可以直接使用。
console.log("cid : " + returnCitySN.cid);
console.log("cip : " + returnCitySN.cip);
console.log("cname : " + returnCitySN.cname);
});
不要用这个网站的音乐API,不提供jsonp调用
改用百度音乐的即可:
效果图:
使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据是设置错误造成的,解决方法为:
1、创建基本的文件结构json_ajax.html和json_ajax.php,下载jquery.js。
2、如图分别编写json_ajax.html和json_ajax.php文件的编码。
3、分别在w(l)amp环境下运行json_ajax.html和json_ajax.php。
4、经过源码和运行结果的分析,知道了在json_ajax.html中设置了按钮的点击事件,点击按钮。
注意事项:
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。