Jquery 基于api调用的样式按钮

Jquery 基于api调用的样式按钮,jquery,html,css,Jquery,Html,Css,我正在创建一个页面,显示集群中多个服务器的状态。我在我的web服务上创建了一个状态路由,如果服务器正常运行,simple会返回“ok”,如果服务器没有正常运行,simple会返回一些错误。我想要几个按钮也许更好的选择?如果api调用返回ok,则显示绿色,否则显示红色。一个问题是,这些呼叫将是跨域的,尽管是在我们公司的防火墙内 很简单,但我是一名Web服务开发人员,几乎没有这方面的经验。我的想法是在页面加载时调用每个服务器的状态路由并设置样式。我不好意思说,我真的不知道从哪里开始。我找到的每一个教

我正在创建一个页面,显示集群中多个服务器的状态。我在我的web服务上创建了一个状态路由,如果服务器正常运行,simple会返回“ok”,如果服务器没有正常运行,simple会返回一些错误。我想要几个按钮也许更好的选择?如果api调用返回ok,则显示绿色,否则显示红色。一个问题是,这些呼叫将是跨域的,尽管是在我们公司的防火墙内

很简单,但我是一名Web服务开发人员,几乎没有这方面的经验。我的想法是在页面加载时调用每个服务器的状态路由并设置样式。我不好意思说,我真的不知道从哪里开始。我找到的每一个教程似乎都遗漏了一些让我“点击”的难题

因此,我的最终问题是,是否有一个已知的教程符合以下标准:

支持html5/CSS3的移动显示响应性设计 jquery/angularjs库(如有必要) 支持跨域api调用 基于api调用结果的按钮绘制。 如果这足够简单,只需在问题回答体中直接显示html和js,也可以。我添加其他部分的唯一原因是,这只是我正在构建的仪表板的一小部分,它将集成统计图和管理功能。因此,与以后的集成相比,从这些功能开始将是理想的


提前谢谢。如果这个问题不够具体,请告诉我。我将进行编辑。

我不确定您是否能找到满足所有要求的教程,如果您只需要显示按钮,最简单的方法是使用jQuery Mobile,因此它将为浏览器和移动设备显示美观的按钮。为此,您不需要使用BackboneJS/AngularJS等JavaScript框架


对于跨域请求,您可以使用以下示例,这样您就不会迷路

我不确定您是否能找到满足所有要求的教程,如果您只需要显示按钮,最简单的方法就是使用jQuery Mobile,因此它将为浏览器和移动设备显示美观的按钮。为此,您不需要使用BackboneJS/AngularJS等JavaScript框架


对于跨域请求,您可以使用以下示例,这样您就不会迷路

此链接足以理解响应性设计:

jquery/angularjs库可以帮助您加快开发速度,因此,就拿一个来说吧


支持跨域api调用此链接足以理解响应式设计:

jquery/angularjs库可以帮助您加快开发速度,因此,就拿一个来说吧


支持跨域api调用这可以在jQuery中轻松完成

有很多方法可以做到这一点,但更改按钮颜色的示例可以是:$server1.cssbackground-color,0000AA;这将选择id为server1的html中的元素,并将背景色的css值添加/更改为0000AA。为了获得更大的灵活性,您可以使用css类,因为通常您将在.addClass和removeClass之间进行切换,所以它有更多的逻辑

现在,您已经知道了更改html元素上css属性的最简单方法,接下来将介绍如何执行web服务调用。有两种方法,1-您的客户机和服务器支持CORS,2-您使用JSONP。JSONP是一种更简单的路由,要使用它,您只需修改web服务,以便在来自客户端的请求中查找回调参数。之后,您需要做的就是将服务器的响应包装为给定的值

例如:假设在请求中有callback=complete,基本上是这样包装的:complete{status:ok};。JSONP的工作原理是将来自webservice的结果解释为脚本,该脚本将使用服务器的结果执行回调函数,从而使您可以在回调函数中使用这些结果。修改服务后,可以使用jQuery的Ajax方法调用Web服务并获取数据

$.ajax({
    type: "GET",
    url: "http://internalserver/myservice.svc/GetServerStatus",
    datatype: "jsonp",
    contentType: "application/json",
    success: function(data) { alert(data.status); }
});
调用完成后,为success定义的函数将激发,使您可以访问结果


这可以在jQuery中轻松实现

有很多方法可以做到这一点,但更改按钮颜色的示例可以是:$server1.cssbackground-color,0000AA;这将选择id为server1的html中的元素,并将背景色的css值添加/更改为0000AA。为了获得更大的灵活性,您可以使用css类,因为通常您将在.addClass和removeClass之间进行切换,所以它有更多的逻辑

现在,您已经知道了更改html元素上css属性的最简单方法,接下来将介绍如何执行web服务调用。有两种方法,1-您的客户端和服务器支持CORS,2-您使用JS ONP。JSONP是一种更简单的路由,要使用它,您只需修改web服务,以便在来自客户端的请求中查找回调参数。之后,您需要做的就是将服务器的响应包装为给定的值

例如:假设在请求中有callback=complete,基本上是这样包装的:complete{status:ok};。JSONP的工作原理是将来自webservice的结果解释为脚本,该脚本将使用服务器的结果执行回调函数,从而使您可以在回调函数中使用这些结果。修改服务后,可以使用jQuery的Ajax方法调用Web服务并获取数据

$.ajax({
    type: "GET",
    url: "http://internalserver/myservice.svc/GetServerStatus",
    datatype: "jsonp",
    contentType: "application/json",
    success: function(data) { alert(data.status); }
});
调用完成后,为success定义的函数将激发,使您可以访问结果


您不一定需要基于jQuery的解决方案,这很简单,但拥有一个纯CSS/JS解决方案也是一个选择。如果您只是使用jQuery来更改颜色或添加类,那么很可能是做错了

实现您想要实现的最常见的方法是对服务器进行远程调用,您可以使用XHR来实现这一点,这取决于XHR的响应和状态,您可以随时更新视图。我提供了一个进度条的例子,为了达到你想要的,你可以遵循类似的方法

例如,您正在创建一个进度条。 使用HTML作为:

  <div class="progress_bar">
      <div class="progress"></div>
  </div>
现在,您可以进行JSAPI调用,说您正在下载一个文件

您只需更改.progress元素的宽度即可

function ProgressBar(elem){
   var bar = elem.getElementsByClassName('progress')[0];
   this.setProgress = function(x){
       bar.style.width = x + '%';
   }
   this.completed = function(){
       elem.classList.add("completed");
   }
   this.errored = function(){
       elem.classList.add("errored");
   }
}
现在,您可以创建一个对象并使用新的XHR2.0API来控制JS部件,但通过添加类等,您可以实现响应性设计,因为JS中的某些更改或逻辑会导致应用CSS类,该类可以使用媒体查询为其定义多个规则。希望这有帮助


有关XHR2.0的更多信息,请阅读此处

您不一定需要基于jQuery的解决方案这很简单,但拥有纯CSS/JS解决方案也是一种选择。如果您只是使用jQuery来更改颜色或添加类,那么很可能是做错了

实现您想要实现的最常见的方法是对服务器进行远程调用,您可以使用XHR来实现这一点,这取决于XHR的响应和状态,您可以随时更新视图。我提供了一个进度条的例子,为了达到你想要的,你可以遵循类似的方法

例如,您正在创建一个进度条。 使用HTML作为:

  <div class="progress_bar">
      <div class="progress"></div>
  </div>
现在,您可以进行JSAPI调用,说您正在下载一个文件

您只需更改.progress元素的宽度即可

function ProgressBar(elem){
   var bar = elem.getElementsByClassName('progress')[0];
   this.setProgress = function(x){
       bar.style.width = x + '%';
   }
   this.completed = function(){
       elem.classList.add("completed");
   }
   this.errored = function(){
       elem.classList.add("errored");
   }
}
现在,您可以创建一个对象并使用新的XHR2.0API来控制JS部件,但通过添加类等,您可以实现响应性设计,因为JS中的某些更改或逻辑会导致应用CSS类,该类可以使用媒体查询为其定义多个规则。希望这有帮助


有关XHR2.0的更多信息,请阅读此处

我不确定能否为您提供一个完全符合您要求的教程。但是我可以给你一个关于跨域api调用的答案:当你控制Web服务时,JSONP将是最适合你的方案。我不确定我能给你一个完全满足你需要的教程。但我可以给你一个关于跨域api调用的答案:当你控制Web服务时,JSONP将是最适合你的解决方案。为什么需要jQuery呢?@Darkyen它不会,但它可以将完成相同任务所需的代码编写量和js所需的知识相类似。OP还列出了jQuery的使用是可以接受的。你所说的就是为什么我们(在js房间)讨厌jQuery,如果你不知道js,你就不能使用jQuery!认真编写盲代码和盲目驾驶是一回事!你可能还活着,但你永远不知道发生了什么!你能做什么happen@DarkyenjQuery的目的是实现更快的开发和更少的代码。jQuery可以处理许多过去需要开发人员明确解决的问题。jQuery是javascript。如果你不学习的话,你将盲目驾驶。如果你为客户工作,而你编写代码只是因为你不想学习或不喜欢有人比你做得更好,那么你就是在偷客户的东西。为什么需要jQuery做任何事情?@Darkyen It不会,但它将编写的代码量和完成相同任务所需的知识量进行了相似化。OP还列出了jQuery的使用是可以接受的。你所说的就是为什么我们(在js房间)讨厌jQuery,如果你不知道js,你就不能使用jQuery!认真编写盲代码和盲目驾驶是一回事!你可能还活着,但你永远不知道发生了什么!你能做什么happen@DarkyenjQuery的目的是实现更快的开发和更少的代码。jQ
在过去,uery可能会处理许多需要开发者明确解决的问题。jQuery是javascript。如果你不学习的话,你将盲目驾驶。如果你为客户工作,而你编写代码只是因为你不想学习或不喜欢别人比你做得更好,那么你就是在偷客户的东西。这不符合他的需要。XmlHttpRequest确实适用于web服务调用,但它是跨域的。如果浏览器或服务器不支持CORS,它将无法工作。jQuery不仅用于css样式,还用于处理CORS的AJAX调用。如果CORS出错了,那么jQueryJQuery肯定不是必需的,但是对于站点的其他部分来说,它是一个很好的库,并且有最好不要复制的代码。有几个很好的答案,但我认为这可能是最吸引人的。谢谢大家!@Darkyen是的,但是你可以很容易地切换到JSONP,而不是为此构建自己的库。我宁愿坚持使用自己的JSONP,只需要几行代码:-|,我使用jQuery的大多数情况下都是在真正需要的时候,这是非常罕见的,主要是在我需要x浏览器兼容性的时候。这不符合他的需要。XmlHttpRequest确实适用于web服务调用,但它是跨域的。如果浏览器或服务器不支持CORS,它将无法工作。jQuery不仅用于css样式,还用于处理CORS的AJAX调用。如果CORS出错了,那么jQueryJQuery肯定不是必需的,但是对于站点的其他部分来说,它是一个很好的库,并且有最好不要复制的代码。有几个很好的答案,但我认为这可能是最吸引人的。谢谢大家!@Darkyen是的,但是你可以很容易地切换到JSONP,而不是为此构建自己的库。我宁愿坚持使用自己的JSONP,只需要几行代码:-|,我使用jQuery的大多数情况下都是在真正需要的时候,这是非常罕见的,主要是在我需要x浏览器兼容性的时候