我已经为解决这个问题而奋斗了 3 天,并且出现了“谷歌超载”——希望能得到一些帮助。
我们有一个 Jenkins 构建服务器,http://jenkinsBuild.mycompany.com:8080
所以如果我在浏览器中输入这个 url...
http://jenkinsBuild.mycompany.com:8080/view/my_view/job/build_me/123/api/json?tree=result
...浏览器页面返回显示...
{"result":"SUCCESS"}
现在,根据Jenkins Wiki,“Jenkins 为其功能提供机器可消耗的远程访问 API”通过 REST API 支持 json 和 jsonp,我认为这应该可以规避任何同源策略问题。
我正在尝试(使用最新的 Chrome 浏览器)获取相同的 json 组件{"result":"SUCCESS"}
。
我正在使用 HTML/javascript 进行$.getJSON()
如下所述的调用。HTML 文件目前驻留在我的本地计算机上,但最终可能会驻留在 wiki 上。三个 url 的控制台输出列在代码之后。
如何通过直接在浏览器中输入 url 获得相同的 json 结果?谢谢你的帮助。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
var url1 = "http://jenkinsBuild.mycompany.com:8080/view/my_view/job/build_me/123/api/json?tree=result";
var url2 = "http://jenkinsBuild.mycompany.com:8080/view/my_view/job/build_me/123/api/json?tree=result&callback=?";
var url3 = "http://jenkinsBuild.mycompany.com:8080/view/my_view/job/build_me/123/api/json?callback=?&tree=result";
$('button').click(function(){
$.getJSON(url1, function(json) {
$("#reply").append("got callback: " + json);
});
});
});
</script>
</head>
<body>
<button>Get Jenkins</button><br />
<div id="reply">
</div>
</body></html>
三个 URL 的控制台输出...
url1 -> XMLHttpRequest cannot load http://jenkinsBuild.mycompany.com:8080/view/my_view/job/build_me/123/api/json?tree=result. Origin null is not allowed by Access-Control-Allow-Origin.
url2 -> Uncaught SyntaxError: Unexpected token : json:1
url3 -> Uncaught SyntaxError: Unexpected token : json:1