Java AJAX:同时有两个请求
我正在使用JSP和Servlet开发一个web应用程序 我不熟悉Java AJAX:同时有两个请求,java,jquery,html,ajax,servlets,Java,Jquery,Html,Ajax,Servlets,我正在使用JSP和Servlet开发一个web应用程序 我不熟悉AJAX和JQuery 我正在使用以下代码从我的jsp页面向servlet发送两个请求: $(document).ready(function() { var $ul = $(SALUTATION); $.get('MyServletName?action=cmbSALUTATION', function(responseJson) { $.each(resp
AJAX
和JQuery
我正在使用以下代码从我的jsp
页面向servlet
发送两个请求:
$(document).ready(function()
{
var $ul = $(SALUTATION);
$.get('MyServletName?action=cmbSALUTATION', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$('<option>').text(item).appendTo($ul);
});
});
setValSALUTATION();
});
function setValSALUTATION()
{
$.get('ProfileContactsMain?action=cmbSALUTATIONValue', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$("#SALUTATION").val(item);
});
});
}
$(文档).ready(函数()
{
var$ul=$(称呼);
$.get('MyServletName?action=cmbSalitation',函数(responseJson)
{
$.each(responseJson,函数(索引,项)
{
$('')。文本(项目)。附录($ul);
});
});
SetValValutation();
});
函数setValSALUTATION()
{
$.get('ProfileContactsMain?action=CMBsaltationValue',函数(responseJson)
{
$.each(responseJson,函数(索引,项)
{
$(“敬礼”).val(项目);
});
});
}
第一个在htmlcombobox
中填充值,第二个在combobox
中为数据库中的记录设置值。Combobox每次都被填充,但该特定记录的值并非每次都被设置,有时在将数据加载到Combobox中之前执行setvalsalation()
那么我的代码有什么错误吗?或者有没有更好的方法来做到这一点
提前感谢….$(文档)。准备好(函数()
$(document).ready(function()
{
var $ul = $(SALUTATION);
$.get('MyServletName?action=cmbSALUTATION', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$('<option value=' + item +'>').text(item).appendTo($ul);
});
setValSALUTATION();
});
});
function setValSALUTATION()
{
$.get('ProfileContactsMain?action=cmbSALUTATIONValue', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$("#SALUTATION").val(item);
});
});
}
{
var$ul=$(称呼);
$.get('MyServletName?action=cmbSalitation',函数(responseJson)
{
$.each(responseJson,函数(索引,项)
{
$('')。文本(项目)。附录($ul);
});
SetValValutation();
});
});
函数setValSALUTATION()
{
$.get('ProfileContactsMain?action=CMBsaltationValue',函数(responseJson)
{
$.each(responseJson,函数(索引,项)
{
$(“敬礼”).val(项目);
});
});
}
因为请求是异步的,所以您需要在第一个请求完成后发出第二个请求。为此,将函数调用放入第一个请求的回调中,如下所示:
$.get(
'MyServletName?action=cmbSALUTATION',
function(responseJson) {
$.each(responseJson, function(index, item) {
$('<option>').text(item).appendTo($ul);
});
setValSALUTATION(); // Note: inside callback, so it will execute
// once DOM is in the proper state
}
);
$。获取(
“MyServletName?action=CMB称呼”,
功能(responseJson){
$.each(responseJson,函数(索引,项){
$('')。文本(项目)。附录($ul);
});
setValValutation();//注意:在回调内部,因此它将执行
//一旦DOM处于正确的状态
}
);
AJAX的意思是“异步Javascript”,因此请求将是异步的,这意味着无法保证先执行哪个请求。对于您的情况,您需要一个同步操作(一个调用应该紧跟在另一个调用之后,它们不是相互独立的),因此
尝试将代码更改为:
$.get('MyServletName?action=cmbSALUTATION', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$('<option>').text(item).appendTo($ul);
});
setValSALUTATION();
});
$.get('MyServletName?action=cmbSalitation',函数(responseJson)
{
$.each(responseJson,函数(索引,项)
{
$('')。文本(项目)。附录($ul);
});
SetValValutation();
});
这将确保只有在填写复选框后才会调用
setValutation
。@Patik Bhatt感谢(和+1)的回答,所有三个答案都解决了我的问题。感谢(和+1)的回答,所有三个答案都解决了我的问题。感谢(和+1)的回答,所有这三个答案都解决了我的问题。我们将感谢投反对票的理由