什么叫ajax跨域访问

什么叫ajax跨域访问,第1张

AJAX 跨域访问是用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面。

Ajax请求一个目标地址为非本域(协议、域名、端口任意一个不同)的web资源,并根据响应获得外部应用数据。比如我们用Ajax访问城市天气预报、IP地址等公共服务接口时,就涉及跨域了。我们请求一个外部服务时,浏览器会基于安全问题拒绝授权访问。

扩展资料

Ajax的优点

使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。

Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

jsonp是英文json with padding的缩写。它允许在服务器端生成script tags至返回至客户端,也就是动态生成javascript标签,通过javascript callback的形式实现数据读取。

html页面端示例代码

复制代码代码如下:

//首先要引入jquery的js包

jQuery(document).ready(function(){

$.ajax({

type : "get", //jquey是不支持post方式跨域的

async:false,

url : "http://api.taobao.com/apitools/ajax_props.do", //跨域请求的URL

dataType : "jsonp",

//传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback)

jsonp: "jsoncallback",

//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

jsonpCallback:"success_jsonpCallback",

//成功获取跨域服务器上的json数据后,会动态执行这个callback函数

success : function(json){

alert(json)

}

})

})

服务器端示例代码,以java为例:

服务器端代码,是重点,开始以为,只要客户端通过jsonp就可以直接跨域访问,其实不然,需要服务器端的支持才行。

复制代码代码如下:

public void jsonpTest() throws IOException{

HttpServletRequest request = ServletActionContext.getRequest()

HttpServletResponse response = ServletActionContext.getResponse()

//根据html指定的jsonp回调函数的参数名,获取回调函数的名称

//callbackName的值其实就是:success_jsonpCallback

String callbackName = (String)request.getAttribute("jsoncallback")

//简单模拟一个json字符串,实际可使用google的gson进行转换,次数通过字符串拼接

//{"name":"张三","age":28}

//\是对"号进行转义

String jsonStr = "{\"name\":\"张三\",\"age\":28}"

//最终返回的数据为:success_jsonpCallback({"name":"张三","age":28})

String renderStr = callbackName+"("+jsonStr+")"

response.setContentType("text/plaincharset=UTF-8")

response.getWriter().write(renderStr)

}

Jquery ajax 想在客户端跨域必须使用jsonp(还可以使用js方式)。你的dataType:"jsonp",没有问题,但看你的url就不像一个jsonp的链接,jsonp的url通常是以?结束的。这里有一篇关于跨域访问的文章,不知对你是否有帮助。http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10869008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存