Jquery AJAX调用需要验证

时间:2016-08-18 10:40:05

标签: ajax google-visualization xpages

我试图在XPage应用程序中使用谷歌图表API。 我使用文档提供的代码示例:https://developers.google.com/chart/interactive/docs/php_example#exampleusingphphtml-file

我必须通过调用LS代理来替换对php页面的调用。

      var jsonData = $.ajax({
      url: "getData.php",
      dataType: "json",
      async: false
      }).responseText;

所以我的代码转到:

     var jsonData = $.ajax({
      url: "http://server/database/agent?openagent",
      dataType: "json",
      async: false
      }).responseText;

在我当地的多米诺骨牌服务器上,它运行正常。 在生产多米诺骨牌服务器上,我什么都没得到。未绘制图表。在调试js客户端之后,即使我以前必须登录,似乎ajax调用仍然需要进行身份验证。

两台服务器上都不允许匿名访问。 两种环境的安全级别似乎相同

如果我错了,欢迎任何帮助(或以其他任何方式继续)。

谢谢

2 个答案:

答案 0 :(得分:0)

如果您能够在本地服务器中绘制谷歌图表,但不能在生产服务器中绘制,这意味着它是您的服务器问题。

您可以添加authentication header in your jquery ajax call以进行经过身份验证的ajax请求

$.ajax({
  headers: {
    "Authorization": "Bearer <TOKEN HERE>" 
  }
})

您还可以send username and password in jquery ajax call进行身份验证请求。以下是链接中的示例代码

$.ajax({
    type: 'GET',
    url: 'url',
    dataType: 'json',
    //whatever you need
    beforeSend: function (xhr) {
        xhr.setRequestHeader('Authorization', make_base_auth(user, password));
    },
    success: function () {});
});

function make_base_auth(user, password) {
    var tok = user + ':' + password;
    var hash = btoa(tok);
    return 'Basic ' + hash;
}

答案 1 :(得分:0)

最后,我尝试通过dojo而不是Jquery运行ajax请求。 我的代码变成了这个:

var jsonData = dojo.xhrGet({
  url: "http://server/database/agent?openagent",
    handleAs:"json",
    ...
})  

我没有在安全级别或其他任何方面进行任何更改。

我不明白为什么jquery语法不能正常运行dojo语法。

无论如何,它现在正在运作。

非常感谢所有人的建议