Javascript 使用动态脚本加载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

我有一个ServiceNow实例正在运行,我正在尝试使用JSON库拉所有用户。我可以很容易地看到用户的JSON列表,如果我输入转储这些数据的URL,我将尝试创建一个网页,该网页将获取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);
        }
    }
此时,脚本似乎加载正确,但会导致语法错误

未捕获的语法错误:意外标记:

我应该如何进行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文件
。您应该尝试做一些研究!我已经找到了