我正在使用JSP& amp;开发一个Web应用程序。的servlet。
我是AJAX
和JQuery
的新手。
我使用以下代码<{1}}向jsp
页面发送了两个请求:
servlet
第一个填充html $(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);
});
});
}
中的值,第二个设置数据库中该记录的combobox
值。每次都会填充Combobox,但每次都不会设置该特定记录的值,有时在组合框中加载数据之前会执行combobox
。
我的代码中有什么问题吗?还是有更好的方法来做到这一点......
提前致谢....
答案 0 :(得分:2)
$(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);
});
});
}
答案 1 :(得分:2)
由于请求是异步的,因此您需要在第一个请求完成后再发出第二个请求。为此,将函数调用放在第一个请求的回调中,如下所示:
$.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
}
);
答案 2 :(得分:1)
AJAX意味着&#34;异步Javascript&#34;是的,因此请求将是异步的,这意味着将无法保证首先执行哪一个。对于你的情况,你需要一个同步操作(一个调用应该在另一个调用之后,它们不是彼此独立的)所以
尝试将您的代码更改为:
$.get('MyServletName?action=cmbSALUTATION', function(responseJson)
{
$.each(responseJson, function(index, item)
{
$('<option>').text(item).appendTo($ul);
});
setValSALUTATION();
});
这将确保仅在填写复选框后才调用setSalutation
。