ajax跨域怎么用,ajax跨域调用

我使用这段代码进行跨域ajax调用,我希望它能在这里提供更多帮助。我使用的是prototype library,您也可以使用jquery或dojo或其他任何工具:

步骤1:创建一个新的js文件并将这个类放入其中,我将其称为xss_ajax.js

var WSAjax = Class.create ({

initialize: function (_url, _callback){

this.url = _url ;

this.callback = _callback ;

this.connect () ;

},

connect: function (){

var script_id = null;

var script = document.createElement('script');

script.setAttribute('type', 'text/javascript');

script.setAttribute('src', this.url);

script.setAttribute('id', 'xss_ajax_script');

script_id = document.getElementById('xss_ajax_script');

if(script_id){

document.getElementsByTagName('head')[0].removeChild(script_id);

}

// Insert into DOM

document.getElementsByTagName('head')[0].appendChild(script);

},

process: function (data){

this.callback(data) ;

}

}) ;

这个类创建一个动态脚本元素,src attributes以json数据提供程序为目标(事实上,json-p作为远程服务器必须以这种格式提供数据::call_back_function(//json_data_here)::因此,当创建脚本标记时,json将直接作为函数进行求值(我们将在步骤2中讨论将回调方法名传递给服务器的问题,其背后的主要概念是类似脚本的img元素不受sop约束的影响。

第二步:在任何一个html页面中,如果你想异步拉json(我们称之为ajaj~asynchronous javascript+json:-)而不是使用xhttprequest对象的ajax),请执行如下操作

//load Prototype first

//load the file you've created in step1

var xss_crawler = new WSAjax (

"http://your_json_data_provider_url?callback=xss_crawler.process"

, function (_data){

// your json data is _data and do whatever you like with it

}) ;

你还记得第一步的回调吗?因此,我们将它传递给服务器,它将返回嵌入该方法中的json,因此在我们的示例中,服务器将返回一个可评估的javascript代码xss_crawler.process(//the_json_data),请记住xss_crawler是wsajax类的一个实例。服务器代码取决于您(如果是您的话),但是大多数ajax数据提供者允许您像我们一样在参数中指定回调方法。

在ruby on rails中,我刚刚做到了

render :json=>MyModel.all(:limit=>10), :callback => params[:callback],:content_type => "application/json"

仅此而已,您现在可以从应用程序(小部件、地图等)中提取另一个域中的数据,只使用json格式,别忘了。

我希望它是有用的,谢谢你的耐心:-),和平和抱歉的代码格式化,它不太好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值