跨域URL

时间:2015-05-12 02:01:18

标签: javascript ajax

我想在我的javascript代码中调用此网址:

http://api.addressify.com.au/address/autoComplete?api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5

这是我的javascript代码:

 $.ajax({
        url: 'http://api.addressify.com.au/address/autoComplete',
        type: 'GET',
        crossDomain: true, // enable this
        data: 'api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5', // or $('#myform').serializeArray()
        success: function () { alert('PUT completed'); }
    });

我在控制台中收到跨域URL错误。

任何帮助?

2 个答案:

答案 0 :(得分:7)

您需要使用JSONP进行跨站点请求调用尝试:

$.ajax({
        url: 'http://api.addressify.com.au/address/autoComplete',
        type: 'GET',
        dataType:'jsonp',
        jsonpCallback:'callback',
        data: 'api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5&jsonp=callback', // or
    success: function(json) {
       console.dir(json);
    },
    });

使用参数' jsonp'调用addressify服务将使服务在响应函数中包装响应,然后jquery ajax用于检索数据。所以$ .ajax参数' jsonpCallback'必须与您传递给服务的参数匹配' jsonp' (在他们的documentation

小提琴:

http://jsfiddle.net/luisvsilva/cL1c3t4j/1/

答案 1 :(得分:1)

只需将数据添加到ajax调用的URL部分。

url: function() { 
    return "http://api.addressify.com.au/address/autoComplete?api_key=" this.get("api_key") + "&term=" + this.get("term") + "&state=" + this.get("state") + "&max_results=" + this.get("max_results") }

}

如果您无法对某些数据进行硬编码,则可以将url声明转换为函数。

NSDate

我正在使用骨干模型方法来获取数据 - 使用您需要做的任何事情。