繁体   English   中英

如何将服务器名称设置为xml文件中javascript中的全局变量?

[英]How to set the server name as a global variable in javascript from an xml file?

我有一个Web应用程序,该应用程序进行了一些Ajax调用,并且我想在XML配置文件中设置要用于ajax调用的服务器域名。 我看过本教程该教程显示了如何在javascript中解析xml文件。 但是问题是我需要进行Ajax调用来解析xml文件,为此,我需要知道服务器域名(我已经在尝试从xml中获取该域名)。

那么,如何在XML文件中设置服务器名称并用于进行Ajax调用呢? 还有其他方法可以在javascript文件本身之外配置服务器名称吗?


编辑:

我可以做这样的事情吗(其中我根本不需要设置服务器名称,也不需要配置文件):

 function getMetricNotifications()
{    
 var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","/rest/general/notifications/metrics",true);
    xmlhttp.send();
    var response = JSON.parse(xmlhttp.responseText);
    return response;
}

xmlhttp.open("GET","/rest/general/notifications/metrics",true); URL的开头未提及域名localhost:8080 (本地)或http://mysite.com:8080 (在服务器上) xmlhttp.open("GET","/rest/general/notifications/metrics",true);

我尝试了一下,但得到了: uncaught syntaxerror unexpected end of input最后一行之前的uncaught syntaxerror unexpected end of input 有什么想法吗?


第二次编辑:

function getMetricNotifications(){   
 var xmlhttp;
 var response = '';
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
          {
             response = JSON.parse(xmlhttp.responseText);
             return response;
          }
      };
    xmlhttp.open("GET","/rest/general/notifications/metrics",true);
    xmlhttp.send(); 
}

现在,我调用此函数并打印结果,尽管未在浏览器中直接访问其余资源会给出正确的JSON响应,但它会打印“ undefined”。 为什么没有得到回应?

这取决于您运行哪种后端技术。 您需要在服务器端解析XML文件,并将服务器名称插入其输出。

在PHP中,您可以执行以下操作

<html>
<head><!-- rest of head -->
<script>
<?php $xml = simplexml_load_file('cfg.xml'); ?>
var server_name = <?= json_encode($xml->servername) ?>
</script>

然后,您可以在JavaScript代码中使用server_name

广告编辑:

是的,在大多数情况下,这是首选的URL格式。

您看到的错误可能是由JSON输入格式错误/不完整引起的。

您正在执行的请求是异步的,因此您需要等待数据可用/下载。 xhr.send()调用之后, xhr.responseText为空。 等待请求进入就绪状态4(完成)。

// ...
xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {
    var data = JSON.parse(xhr.responseText);
    // ... do something with data ...
  }
};
xhr.send(null);

广告第二个EDIT:

我想您以同步方式使用该功能,例如

var data = getMetricNotifications();

如果要异步获取数据,则不能这样做。 您需要熟悉回调函数的概念,并改为执行以下操作:

getMetricNotifications(function (data) {
  // work with the received data
});

无需返回数据,而是将其传递给回调函数,如下所示:

var getMetricNotifications = function (callback) {
  // ... do the call ...
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && ...) {
      var data = JSON.parse(xhr.responseText);
      callback(data);
    }
  };
  // ... 
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM