我正在运行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:意外的令牌:
我应该如何进行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来获取数据,但也遇到了安全问题。
谢谢,
克里斯
答案 0 :(得分:1)
根据我在Calgary 上使用JSON Web服务插件的经验,ServiceNow不支持JSONP,只支持JSON。
您可能需要构建自定义脚本化Web服务以获得正确的格式..我也没有看到JSONP在都柏林出现。
链接示例:
https://<instance>.service-now.com/<table>.do?JSON&sysparm_action=getRecords&displayvalue=true
displayvalue=true
将参考字段的sys_id交换为人性化的替代方案。
要访问数据结构,它就像:
一样简单function callMe() {
$.getJSON('url.json', function(myData) {
for (n = 0; n < myData.records.length; n++) {
console.log(myData.records[n].<column1> + '\n' +
myData.records[n].<column2> + '\n' +
myData.records[n].<column3> + '\n' +
myData.records[n].<column4> + '\n\n'
);
}
});
};
最好使用CMS /果冻制作此列表。
答案 1 :(得分:0)
您可以尝试使用$.ajax({});
代替$.getSrript();
来执行跨域$.ajax({url: "your_url.php",dataType; "jsonp",success: function(data){ document.write(data);} });