【发布时间】:2013-06-30 09:57:59
【问题描述】:
我有一个正在运行的 ServiceNow 实例,我正在尝试使用 JSON 库拉取所有用户。如果我输入转储此数据的 URL,我可以轻松查看 JSON 用户列表,我正在尝试创建一个网页,该网页将获取此 JSON 列表并从中列出用户列表。我不断遇到跨域问题,CORS 无法使用,因此我试图根据用户的信息动态加载脚本。这是我正在尝试使用的代码。
function test() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var domain = document.getElementById("domain").value;
var targeturl = "https://" + username + ":" + password + "@"
+ domain + "/sys_user_list.do?JSON&sysparm_action=getRecords";
$.getScript(targeturl + "&callback=dumpData")
function dumpData(data) {
alert(data);
}
}
此时脚本似乎可以正常加载,但会导致语法错误。
Uncaught SyntaxError: Unexpected token :
我应该如何调用 getScript 以便获取我的 JSON 数据?这甚至是一种有效的方法吗,我在试图解决这个问题时偶然发现了它,这似乎是我唯一的选择。我试过YQL,但是不行。
编辑:
我已经重做了代码以使用 $.ajax,这里是代码
$.ajax({
url: 'https://' + username + ':' + password + "@" + domain + '/sys_user_list.do?JSON&sysparm_action=getRecords&callback=test',
type: "GET",
success: function (data) {
alert("hello");
},
crossDomain: true,
dataType: "jsonp",
jsonpCallback: 'test'
});
function test(data) {
alert("It worked!");
}
我已经搜索了所有与此相关的帖子,但仍然无法弄清楚这一点。有人对如何纠正这种情况有任何建议吗?它仍然给出无效的语法错误。是不是无法获取这个 JSON 数据?
我也尝试过 YQL 来获取数据,但也遇到了安全问题。
谢谢,
克里斯
【问题讨论】:
-
你试过在
$.getScript()之前定义回调吗? -
看起来您正在尝试使用 JSONP,是的,这应该是一个有效的方法。我认为您的语法不太正确 - 在 jQuery 文档中查找 .getJSON。
-
如果我使用 .getJSON 则会出现跨域错误。
-
考虑 JS 或 JSON 文件中的不可见字符。stackoverflow.com/questions/12719859/…
标签: javascript jquery cross-domain access-control servicenow