Java AJAX:同时有两个请求

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

我正在使用JSP和Servlet开发一个web应用程序

我不熟悉
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(项目);
});
});
}
第一个在html
combobox
中填充值,第二个在
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)的回答,所有这三个答案都解决了我的问题。我们将感谢投反对票的理由