API在浏览器中工作,而不是JS

时间:2014-08-15 19:18:15

标签: javascript jquery ajax jsonp

此URL在浏览器中输出JSON

http://api.sfpark.org/sfpark/rest/availabilityservice?lat=37.7832776731&long=-122.405537559&radius=0.10&uom=mile&response=json

但是当我像下面的Jquery一样使用它时,它似乎输出了这个错误

{"STATUS":"ERROR","MESSAGE":"Error while retrieving availability.  Search parameters are not valid. callback is not a valid request parameter. _ is not a valid request parameter.","RESPONSE_SENT_TS":"2014-08-15T12:16:01.455-07:00","REQUEST_RECD_TS":"2014-08-15T12:16:01.450-07:00"}

这是我正在使用的代码

var parkingUrl = "http://api.sfpark.org/sfpark/rest/availabilityservice?lat=37.7832776731&long=-122.405537559&radius=0.10&uom=mile&response=json";

$.ajax({
    url:parkingUrl,
    type:'GET',
    dataType:'JSONP',
    success: function(data){
        console.log(data);
    }
});

3 个答案:

答案 0 :(得分:0)

您正在使用JSONP调用Web服务。 jQuery中的JSONP通过向url添加回调函数来工作,因此调用的url变为类似

http://api.sfpark.org/sfpark/rest/availabilityservice?lat=37.7832776731&long=-122.405537559&radius=0.10&uom=mile&response=json&callback=callbackfn

webservice不支持此参数。你必须使用type:json并希望webservice支持CORS。

答案 1 :(得分:0)

您获得的错误基于服务器端脚本。

可能服务器可能不支持你想尝试的JSONP:

$.ajax({
    url:parkingUrl,
    type:'GET',
    success: function(data){
       console.log(JSON.parse(data));
    }
});

页面的PHP代码

header('Access-Control-Allow-Origin: http://api.sfpark.org');

您也可以尝试,如果这不起作用,您可以尝试使用PHP或任何使用的方式在服务器端提取页面信息

$parkingURL = 'http://....';
echo file_get_contents($parkingURL);

答案 2 :(得分:0)

根据他们的API文档,他们确实支持JSONP,你需要添加这个参数:

&jsoncallback=callbackFunctionName

根据您的要求提供网址