Javascript $.ajax在调用google api时返回错误

Javascript $.ajax在调用google api时返回错误,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,我正在构建一个angular应用程序,其中有一个“公共交通”部分,我想从谷歌api获取方向。我似乎得到了一个有效的url——当我在浏览器中输入url时,它会返回json。但是当用户$.ajax时,我得到一个错误 网址 角度控制器中的函数 有人能想出解决办法吗 提前谢谢。 HS.该URL返回纯JSON,但您需要JSONP来发出跨源请求。我不确定google是否有用于地图的JSONP选项,但您可以研究其他一些方法,如CORS或服务器端代理。原因是您没有正确设置数据类型,因为使用JSONP需要数据类型

我正在构建一个angular应用程序,其中有一个“公共交通”部分,我想从谷歌api获取方向。我似乎得到了一个有效的url——当我在浏览器中输入url时,它会返回json。但是当用户$.ajax时,我得到一个错误

网址 角度控制器中的函数 有人能想出解决办法吗

提前谢谢。
HS.

该URL返回纯JSON,但您需要JSONP来发出跨源请求。我不确定google是否有用于地图的JSONP选项,但您可以研究其他一些方法,如CORS或服务器端代理。

原因是您没有正确设置数据类型,因为使用JSONP需要数据类型。这就是您可能会出现此错误的原因(我假设您使用的是jQuery):

但是,即使您通过如下方式重写代码来解决此问题:

var url = "http://maps.googleapis.com/maps/api/directions/json?origin=Assenede,%20Belgi%C3%AB&destination=Industrieweg%20232,Gent-Mariakerke,belgium&sensor=false&departure_time=1343641500&mode=transit";

$.ajax({
    dataType:"jsonp",
    url: url,
    success:function(data){
        alert(data);
    },
    error:function(xhr, status, error){
        console.log('error:' + status + error);
    }
});
您将得到另一个错误:

Uncaught SyntaxError: Unexpected token : json:2
error:parsererrorError: jQuery110209881844320334494_1387726816235 was not called 

这意味着远程端(在您的例子中是Google)向您发送纯JSON,而不是请求的JSONP。正如David提到的,您需要修改您的解决方案,并找到另一种调用Google API的方法(例如,您可以尝试使用)。

查看您的错误控制台。它会说请求的资源上没有“Access Control Allow Origin”头。为什么
contentType:“application/jsonp”
?这不是一个注册的MIME类型(JSONP意味着对某个东西发出请求,该请求将给出
应用程序/javascript
响应),并且它是一个GET请求,因此不会有任何内容供内容类型描述!
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 
var url = "http://maps.googleapis.com/maps/api/directions/json?origin=Assenede,%20Belgi%C3%AB&destination=Industrieweg%20232,Gent-Mariakerke,belgium&sensor=false&departure_time=1343641500&mode=transit";

$.ajax({
    dataType:"jsonp",
    url: url,
    success:function(data){
        alert(data);
    },
    error:function(xhr, status, error){
        console.log('error:' + status + error);
    }
});
Uncaught SyntaxError: Unexpected token : json:2
error:parsererrorError: jQuery110209881844320334494_1387726816235 was not called