- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Ajax、javascript 和 html,并且有一个应用程序可以触发“get”请求,然后再触发另一个“get”请求。这些请求是用户按下按钮的结果。在我的 servlet 中,我使用 TimeUnit.SECONDS.sleep(10); 模拟了正在冲泡的咖啡订单;
当发送第二个“get”请求时(在 10 秒过去之前),第一个请求将被中止(在 Firefox 和 Chrome 中)。我已经进行了研究,但还没有找到足够的答案来解释原因。
有人可以解释一下吗?非常感谢。
这是我的 html...
<html>
<head>
<title>Ajax-powered Coffee Maker</title>
<link rel="stylesheet" type="text/css" href="coffee.css" />
<script type="text/javascript" src="ajax.js"> </script>
<script type="text/javascript" src="coffee.js"> </script>
<script type="text/javascript" src="text-utils.js"> </script>
</head>
<body>
<div id="header">
<h1>Ajax-powered Coffee Maker</h1>
</div>
<div id="wrapper">
<div id="coffeemaker1">
<h2>Coffee Maker #1</h2>
<p><img src="images/CoffeeMaker1.gif" alt="Coffee Maker #1" /></p>
<div id="coffeemaker1-status">Idle</div>
</div>
<div id="coffeeorder">
<p><img src="images/coffeeMugWithBeans.jpg" alt="Coffee Pot 1" /></p>
<h2>Place your coffee order here:</h2>
<div id="controls1">
<form>
<p>Name: <input type="text" name="name" id="name" /></p>
<h3>Size</h3>
<p>
<input type="radio" name="size"
value="small" checked>Small</input>
<input type="radio" name="size"
value="medium">Medium</input>
<input type="radio" name="size"
value="large">Large</input>
</p>
<h3>Beverage</h3>
<p>
<input type="radio" name="beverage"
value="mocha" checked>Mocha</input>
<input type="radio" name="beverage"
value="latte">Latte</input>
<input type="radio" name="beverage"
value="cappucino">Cappucino</input>
</p>
<p>
<input type="button"
onClick="orderCoffee();"
value="Order Coffee" />
</p>
</form>
</div>
</div>
<div id="coffeemaker2">
<h2>Coffee Maker #2</h2>
<p><img src="images/CoffeeMaker2.gif" alt="Coffee Maker #2" /></p>
<div id="coffeemaker2-status">Idle</div>
</div>
<p id="clear"></p>
</div>
</body>
</html>
我的 JavaScript...
var request;
try {
request = new XMLHttpRequest(); // Most browsers will do this
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxm12.XMLHTTP"); // Internet Explorer
// does this
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP"); // And this
// sometimes
} catch (failed) {
request = null;
}
}
}
if (request == null) {
alert("Error Creating Request Object!");
} else {
alert("Request Object created!");
}
function getBeverage() {
var beverageGroup = document.forms[0].beverage;
for ( var i = 0; i < beverageGroup.length; i++) {
if (beverageGroup[i].checked == true) {
return beverageGroup[i].value;
}
}
}
function getSize() {
var sizeGroup = document.forms[0].size;
for ( var i = 0; i < sizeGroup.length; i++) {
if (sizeGroup[i].checked == true) {
return sizeGroup[i].value;
}
}
}
function serveDrink() {
var reply = request.responseText;
console.log("reply: " + reply);
}
function orderCoffee() {
console.log("ordering coffee");
var name = document.getElementById("name").value;
var size = getSize();
var beverage = getBeverage();
var coffeemakerStatusDiv1 = document.getElementById("coffeemaker1-status");
var status = getText(coffeemakerStatusDiv1);
console.log("status1: " + status);
if (status == "Idle") {
replaceText(coffeemakerStatusDiv1, "Brewing " + name + "'s " + size + " " + beverage);
document.forms[0].reset();
var url = "coffee.do?name=" + escape(name) + "&size=" + escape(size)
+ "&beverage=" + escape(beverage) + "&coffeemaker=1";
sendRequest(url);
} else {
var coffeemakerStatusDiv2 = document.getElementById("coffeemaker2-status");
var status = getText(coffeemakerStatusDiv2);
console.log("status2: " + status);
if (status == "Idle") {
replaceText(coffeemakerStatusDiv2, "Brewing " + name + "'s " + size + " " + beverage);
document.forms[0].reset();
var url = "coffee.do?name=" + escape(name) + "&size=" + escape(size)
+ "&beverage=" + escape(beverage) + "&coffeemaker=2";
sendRequest(url);
} else {
console.log("y am i here?");
}
}
}
function sendRequest(url) {
request.onreadystatechange = serveDrink;
request.open("get", url, true);
request.send();
}
还有我的 servlet...
package com.asponte.controller;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.websphere.logging.WsLevel;
/**
* Servlet implementation class CoffeeController
*/
@WebServlet("/CoffeeController")
public class CoffeeController extends HttpServlet {
private static final long serialVersionUID = 1L;
private Logger s_log = Logger.getLogger("com.asponte.controller");
/**
* @see HttpServlet#HttpServlet()
*/
public CoffeeController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
boolean isDebug = false;
if (s_log.isLoggable(WsLevel.ALL)) {
isDebug = true;
}
if (isDebug) {
s_log.entering("Coffee Servlet doGet()", "entering");
}
String name = request.getParameter("name");
String size = request.getParameter("size");
String beverage = request.getParameter("beverage");
String maker = request.getParameter("coffeemaker");
System.out.println("name: " + name);
System.out.println("size: " + size);
System.out.println("beverage: " + beverage);
System.out.println("maker: " + maker);
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String toReturn;
if (maker.equals("1")) {
toReturn = "1";
} else if (maker.equals("2")){
toReturn = "2";
} else {
toReturn = "doggit";
}
response.getWriter().write(toReturn);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
最佳答案
也许这是因为您的服务器端配置,它仅使用一个线程来处理所有到达的请求。
关于javascript - Http Get 请求中止先前的 Get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084672/
我想在某个条件不满足时中止这个方法,我该怎么做? 我不使用 tableView:willSelectRowAtIndexPath: 方法。我认为可以结合这两种方法来防止某些行被选择并被推送到另一个 V
list->history=(char*)malloc(sizeof(char)); strcpy(list->history,pch2); 当我使用上面的代码时,我无法多次打开该文件。它给了我这个
我试图在退出应用程序后阻止 BroadcastReceiver 出现。到目前为止,我只在安装应用程序时让它显示 Toast。它工作得很好,除了如果我退出应用程序,接收器仍然处于 Activity 状态
当我从 SDK 管理器运行它时,加载过程正常,但一旦完成,模拟器的闪光灯会出现然后很快消失。 有时加载后没有任何反应。 最糟糕的是,当它加载时,我会收到“太多模拟器实例正在这台机器上运行。正在中止”消
./product -rows 4 -cols 4 我收到这个错误: terminate called after throwing an instance of 'std::bad_alloc'
我想要的:我想成为第一个接收短信广播的人,如果我只对短信感兴趣,我想取消广播,这样广播就不会到达任何其他应用程序/接收器(默认消息应用程序ETC。)。我所知道的是: SmsDisptacher.jav
有人知道为什么我会在 LogCat 中收到此警告吗? 01-18 01:18:17.475: W/HardwareRenderer(25992): Attempting to initialize h
我在运行 Kivy hello world 程序时遇到了一个常见的错误。我尝试了我在这里看到的解决方案:手动安装 gstreamer,将其添加到 PATH 并安装 PySDL2。我的操作系统是 Win
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这三者有什么区别,如果出现我无法正确处理的异常,我应该如何结束程序? 最佳答案 abort 表示程序“异常”结束,并引发 POSIX 信号 SIGABRT,这意味着您为该信号注册的任何处理程序都将被调
我在 .gitconfig 中将 rebase.autoStash 设置为 'true',这样我就可以运行 rebase 在脏工作树上。但是,如果 rebase 由于某种原因中止,则对跟踪文件的所有更
你好,我在 virtualenv 中使用 pyinstaller 创建了一个 kivy python 我的程序在控制台中使用命令 python cipol.py 运行成功,没有错误但是当使用命令 py
.load() jQuery的功能库允许您有选择地从另一个页面加载元素(遵循某些规则)。我想知道是否可以中止加载过程。 在我们的应用程序中,用户可以浏览项目列表。他们可以选择单击一个按钮,该按钮会加载
我最近尝试搁置对Mercurial的更改,并且发生了搁浅的rebase冲突,但最终解决了。此后出了点问题,因为现在当我尝试做其他事情时,出现以下错误: abort: unshelve already
我有一个持续运行的 azure Web 作业,但日志表明周末它的状态更改为“已中止”,然后变为“已停止”。虽然我周末没有使用该网站,但我不确定为什么会发生这种情况,因为队列中仍然有很多消息需要处理。
嗨,我正在编辑构建我的android APK的android docker实例。 我想添加一个checkstyle异常,如果发生任何警告,该异常将导致中止。 我在运行checkstyle的过程中起作用
我有一个具有多个阶段的 Jenkins 管道,例如: node("nodename") { stage("Checkout") { git .... } stage("Check
我的设置是这样的(为了清晰起见,进行了简化): Method 1 FB Method Method 3 ... 因此,每个方法,如果单击,都会淡入内联内容,除了具有“fb
我正在发送一个ajax请求,该请求在选择框的更改事件上调用。现在我想要的是,当向服务器发送新请求时,它将中止所有先前的ajax请求,否则将会有很多同时执行的 ajax 请求数。我只想执行最新的请求。
我有一个 AJAX 请求,它从远程文件中获取数据并显示在页面上的 div 中。当用户将鼠标悬停在链接上时,将调用 AJAX,并显示带有数据的 div,而当鼠标移出链接时,它会消失。 div 会立即显示
我是一名优秀的程序员,十分优秀!