Javascript 使用动态脚本加载JSON数据-跨域-CORS不可用
我有一个ServiceNow实例正在运行,我正在尝试使用JSON库拉所有用户。我可以很容易地看到用户的JSON列表,如果我输入转储这些数据的URL,我将尝试创建一个网页,该网页将获取JSON列表并从中生成一个用户列表。我经常遇到跨域问题,CORS不可供我使用,因此我尝试根据用户的信息动态加载脚本。这就是我正在努力工作的代码Javascript 使用动态脚本加载JSON数据-跨域-CORS不可用,javascript,jquery,cross-domain,access-control,servicenow,Javascript,Jquery,Cross Domain,Access Control,Servicenow,我有一个ServiceNow实例正在运行,我正在尝试使用JSON库拉所有用户。我可以很容易地看到用户的JSON列表,如果我输入转储这些数据的URL,我将尝试创建一个网页,该网页将获取JSON列表并从中生成一个用户列表。我经常遇到跨域问题,CORS不可供我使用,因此我尝试根据用户的信息动态加载脚本。这就是我正在努力工作的代码 function test() { var username = document.getElementById("username").va
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);
}
}
此时,脚本似乎加载正确,但会导致语法错误
未捕获的语法错误:意外标记:
我应该如何进行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来获取数据,但也遇到了安全问题
谢谢
克里斯也许你应该试试
$.ajax({})代码>而不是$.getsrcript()
进行跨域操作,例如$.ajax({url:'your_url.php',dataType;'jsonp',success:function(data){document.write(data);})代码>可能是您应该尝试$.ajax({})代码>而不是$.getsrcript()
进行跨域操作,例如$.ajax({url:'your_url.php',dataType;'jsonp',success:function(data){document.write(data);})代码>根据我在卡尔加里使用JSON Web服务插件的经验,ServiceNow不支持JSONP,只支持JSON
您可能需要构建一个自定义脚本Web服务以获得正确的格式。。我也不认为JSONP会在都柏林出现
链接示例:
https://.service-now.com/.do?JSON&sysparm_action=getRecords&displayvalue=true
displayvalue=true
将参考字段的系统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'
);
}
});
};
函数callMe(){
$.getJSON('url.json',函数(myData){
对于(n=0;n
您最好使用CMS/jelly来列出此列表。根据我在卡尔加里使用JSON Web服务插件的经验,ServiceNow不支持JSONP,只支持JSON
您可能需要构建一个自定义脚本Web服务以获得正确的格式。。我也不认为JSONP会在都柏林出现
链接示例:
https://.service-now.com/.do?JSON&sysparm_action=getRecords&displayvalue=true
displayvalue=true
将参考字段的系统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'
);
}
});
};
函数callMe(){
$.getJSON('url.json',函数(myData){
对于(n=0;n
您最好使用CMS/jelly来创建此列表。您是否尝试在$.getScript()
之前定义回调?看起来您正在尝试使用JSONP,是的,这应该是一个有效的方法。我不认为你的语法非常正确——在jQuery文档中查找。如果我使用.GeJSON,那么我会得到一个跨域错误。考虑JS或JSON文件中的不可见字符。您是否尝试过在$.getScript()
之前定义回调?看起来您正在尝试使用JSONP,是的,这应该是一个有效的方法。我不认为你的语法非常正确——在jQuery文档中查找。如果我使用.GeJSON,那么我会得到一个跨域错误。考虑JS或JSON文件中的不可见字符。所以我尝试了你的建议,我们似乎更接近了,但现在我有两个稍微不同的问题。我一直遇到语法错误,出于某种原因,它不喜欢:在我的用户名和密码之间。如果我对url进行编码,它会尝试通过添加我试图点击的链接连接到服务器。但是如果我将url作为一个字符串输入,我会得到一个mime类型的错误。嗯,这就像变成了另一个未知错误,你确定你输入了准确的url
?或者问题可能是从您的服务器xml文件中提交的。你应该试着做些研究!我已经翻遍了很多关于这个错误的帖子,它们似乎都推荐了同样的东西,但都不起作用(这意味着它来自您试图获取响应的实际url中的xml文件。您在页面中使用UTF-8吗?是的,使用UTF-8。另一件事是我得到的是JSON对象。不是xml。因此我尝试了您的建议,我们似乎更接近,但现在我有两个稍微不同的问题。我一直遇到语法错误r、 出于某些原因,它不喜欢:在我的用户名和密码之间。如果我对url进行编码,它会尝试通过添加我试图点击的链接连接到服务器。但是如果我将url作为一个字符串输入,我会得到一个mime类型错误。嗯,这就像变成另一个未知错误,你确定输入了准确的url 或者可能是问题来自您的服务器xml文件。您应该尝试做一些研究!我已经找到了