Java Ajax将数据附加到以前的数据中?
Java Ajax将数据附加到以前的数据中?,java,jquery,ajax,gson,Java,Jquery,Ajax,Gson,index.jsp <input type="text" onfocusout="show(this.value)" /> <div id="output"></div> <script type="text/javascript"> function show(cat) { var output = document.getElementById("output"); $.ajax({
index.jsp
<input type="text" onfocusout="show(this.value)" />
<div id="output"></div>
<script type="text/javascript">
function show(cat)
{
var output = document.getElementById("output");
$.ajax({
type:"get",
url:"fetchdata",
data:"cat="+cat,
success:function(responseJson){
output.innerHTML = responseJson;
}
});
}
}
上面的代码工作正常,但当发出多个ajax请求时,数据会附加到我从上一个ajax请求收到的数据中。我只想用新数据更新
div
,还想知道如何发送多个对象作为响应,并操纵它们从中提取值。Servlet是多线程的,这意味着Servlet容器将实例化少量实例,但运行多个线程(每个请求一个)通过每个实例。因此,在Servlet类上定义为实例属性的属性将在通过该实例执行的所有线程(请求)之间共享状态
如果实例化一个类(对其调用new),则该类中的所有方法都可以看到实例属性,它们的值是共享的。对于Servlet,Servlet容器至少创建一个Servlet实例,然后出于性能原因,通过该Servlet实例对每个传入请求执行一个线程。这意味着每个执行线程都能够看到实例属性中的值。在方法范围内移动属性意味着每个线程都有自己的副本
将所有属性的声明从实例级别移动到doGet()方法中,那么状态将不再共享。以这种方式在Servlet上共享状态通常是不好的做法
此行为在这里的EE教程中进行了解释-参见17.3.2:
另外,与其创建自己的JDBC连接,最好的做法是在servlet容器上定义一个数据源(如何定义取决于您正在运行的内容),并让应用服务器为您管理连接。您只需在需要时从数据源拉取连接
要回答问题的第二部分,您可以这样构造json,以便在响应中包含多个属性:
{
"pname" : "pname value",
"iname" : "iname value"
//etc
}
如果这些属性本身有属性、嵌套对象,那么只需创建另一个Json对象作为其中一个属性的值。。您将json响应视为html,当您执行
output.innerHTML=responseJson代码>没有附加,前面的html是replaced@charlietfl是的,它必须取代以前的html,但我不知道为什么它不这样做。创建一个演示,复制这个。此外,show()
中的cat
甚至没有定义。您确定浏览器控制台中没有出现错误吗?显示的代码应该失败。我如何创建演示?抱歉,这只是一个输入错误。我已经更新了它。谢谢。但是你能再解释一下为什么部分。如果你能在问题的第二部分给我一些启发,并添加一些更详细的信息,那会很有帮助。让我知道这是否有帮助?谢谢。您还可以告诉我如何发送多个对象作为响应,因为我还想向ajax调用发送iname
、cname
和price
。
{
"pname" : "pname value",
"iname" : "iname value"
//etc
}