【发布时间】:2014-07-26 06:44:36
【问题描述】:
我有两个函数:function1() 和 function2() 这两个函数都有对 servlet 的 ajax 调用。第二个函数使用文本框中的值,该值由 function1() 的 ajax 调用更新。现在我的问题是 function2() 在文本框更新之前运行。所以请帮助我。
我也用过
$.ajax({
url:fun1(row),
success:function(){
fun2();
}
});
function fun1(row) {
$(".calclr").val("0");
var acq = row.find('td').eq(3).find("input").val();
var rate = row.find('td').eq(6).find("input").val();
$("#txtcomp").val(parseInt(acq * rate));
$("#txtsolatium").val(parseInt($("#txtcomp").val() * 0.3));
var field = $("#PlotTable").find(".tabactive");
$(".tabactive").removeClass("tabactive");
// $(this).children("td").addClass("tabactive");
row.addClass("tabactive");
var caseid = $("#caseId").val();
JSONAry = JSON.stringify({
Caseid: caseid
});
$.ajax({
type: 'POST',
url: 'geturgord',
data: {
JsonArray: JSONAry
},
success: function(retn) {
var obj = JSON.parse(retn);
if (obj.success == "true") {
var damg = obj.arr;
var objdam = JSON.parse(damg);
var assmnt = objdam.assess;
var not4us = objdam.not4us;
var notus417 = objdam.notus417;
var comland = $("#txtcomp").val();
if (objdam.ordurg == "1") {
var start = new Date(assmnt);
var end = new Date(not4us);
var diff = new Date(start - end);
var days = diff / 1000 / 60 / 60 / 24;
$("#txtintrst").val(parseInt(comland * days * (0.12 / 365)));
} else if (objdam.ordurg == "2") {
var start = new Date(assmnt);
var end = new Date(notus417);
var diff = new Date(start - end);
var days = diff / 1000 / 60 / 60 / 24;
$("#txtintrst").val(parseInt(comland * days * (0.12 / 365)));
}
var awdid = $("#hidawdid").val();
var pltsl = row.find('td').eq(1).find("input").val();
var table = "surfdam";
JSONArry = JSON.stringify({
Awdid: awdid,
id: pltsl,
Table: table
});
$.ajax({
type: 'POST',
url: 'getAwdeePlt',
data: {
JsonArray: JSONArry
},
success: function(retn) {
var obj = JSON.parse(retn);
if (obj.success == "true") {
var surfdam = obj.table;
var objdam = JSON.parse(surfdam);
var damtot = 0;
$.each(objdam, function(i) {
damtot = damtot + parseFloat(objdam[i].damamount);
});
$("#txtsurf").val(parseInt(damtot));
$("#txttotcomp").val(parseInt($("#txtcomp").val()) +
parseInt($("#txtintrst").val()) + parseInt($(
"#txtsolatium").val()) + parseInt($("#txtsurf")
.val()));
}
}
});
}
}
});
}
【问题讨论】:
-
fun1()是 ajax 调用吗? -
是的 fun1() 和 fun2() 都有 ajax 调用
-
文本框更新在代码的哪里完成?
-
请将代码出示给
fun1()。如果不更改fun1()的代码,您将无法解决此问题。只有在fun1()使用其成功处理程序或使用 Promise 完成后,您才会触发您显示的 ajax 调用。 -
您是否尝试过使用
complete字段?您可以阅读有关ajax 的更多信息。还有一种方法可以在 ajax 完成后使用.done()执行回调
标签: jquery ajax function jsp servlets