我有以下jquery代码:
$(document).ready(function()
{
$('button').click(function()
{
$.getJSON('http://world.needforspeed.com/SpeedAPI/ws/game/nfsw/server/status?output=json', function(json)
{
alert("Entered getJSON");
$("#output").append("working...");
if(json.status.indexOf("success")===0)
{
alert("success");
$.each(json.results, function(i, data)
{
$("#output").append(data.text);
});
}else
{
alert("Failed to load url");
}
});
});
});
从网址中提取的json看起来像:
{"worldServerStatus": {
"customMessage": "",
"lastChangedDate": {
"date": 31,
"day": 4,
"hours": 17,
"minutes": 48,
"month": 4,
"nanos": 0,
"seconds": 32,
"time": 1338486512000,
"timezoneOffset": 0,
"year": 112
},
"localizedMessage": "The servers are currently up and running.",
"message": "ALL_SYSTEMS_GO",
"status": "UP"
}}
我的jquery只是拒绝输入$ .getJSON函数,“激活的getJSON”警报不会触发。
有什么问题?
解决。谢谢大家:))
答案 0 :(得分:3)
你检查了控制台吗?您可能遇到访问控制原因错误
答案 1 :(得分:1)
由于CORS,您无法从其他域获取JSON,除非它们支持same origin policy。
api是否支持jsonp?
答案 2 :(得分:0)
我认为你无法做到这一点。对于跨域ajax请求api提供者必须使用jsonp。你可以做的是为请求创建一个php文件。让我们调用request.php文件
<?php
/* gets the data from a URL */
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$query = $_SERVER['QUERY_STRING'];
$url = ('http://world.needforspeed.com/SpeedAPI/ws/game/nfsw/server/status?'.$query);
echo get_data($url);
?>
然后在你的javascript中
$.getJSON('http://myserver.com/request.php?output=json', function(json)