使用动态脚本加载JSON数据-跨域-CORS不可用
Using Dynamic Scripts to load JSON Data - Cross Domain - CORS not available
我有一个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);
}
}
在这一点上,脚本似乎加载正确,但它会导致语法错误。
未捕获的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获取数据,但也遇到了安全问题。
谢谢,
Chris
根据我在卡尔加里上使用JSON Web Services插件的经验,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/果冻来列出这个列表。
可能您应该尝试$.ajax({});
而不是$.getSrript();
来执行跨域操作,例如$.ajax({url: "your_url.php",dataType; "jsonp",success: function(data){ document.write(data);} });
- Sencha Touch-跨域(CORS)问题
- 跨域资源共享 (CORS) 是否区分 HTTP 和 HTTPS
- 使用嵌入式 JS(CORS+AJAX 请求)跨域安全登录
- 使用 jQuery.support.cors 的跨域脚本 = true
- 没有 CORS 或 JSONP 的跨域请求
- 使用动态脚本加载JSON数据-跨域-CORS不可用
- HTML5 Web工作者是否可以/应该使用CORS进行跨域工作
- Ajax跨域错误,但我使用的是同一个域(CORS)
- 跨域资源共享(CORS)概念
- IE10和跨域资源共享(CORS)问题与图像/画布
- [CORS]跨域请求只支持协议方案:http, data, chrome, chrome-extension, http
- CORS相对于跨域消息传递的优势
- 由于CORS错误,无法跨域ajax发布到Heroku上的Rails应用程序
- JQuery getJSON的CORS错误,即使不做跨域请求
- 如何配置以Joomla为服务器的跨域资源共享(Cross Origin Resource Sharing, CORS)
- 如何在客户端跨域使用CORS
- 通过对服务器的初步 CORS 调用来保证跨域窗口的源(父 URL).打开程序调用
- 浏览器同步 + gulp:跨域 Cors 问题
- 当分配HTML5视频标签给webGL纹理时,CORS/跨域安全异常
- 如何使用ajax POST实现跨域资源共享(CORS)