Jquery ui Jquery中出现插入元素过程错误
我有以下HTML代码:Jquery ui Jquery中出现插入元素过程错误,jquery-ui,jquery,Jquery Ui,Jquery,我有以下HTML代码: <table class="viewTable"> <tr> <td>Price</td> </tr> </table> 我使用了Jade对这个问题的回答中的map函数: 我的问题要么是结果的显示,要么是过程本身不正确。首先插入价格行,然后插入总价行;相反,顺序是相反的,totalPrice出现在价格行的前面。当我在插入totalPrice之前插入一条警告语句时,它工作得很好。有什么
<table class="viewTable">
<tr>
<td>Price</td>
</tr>
</table>
我使用了Jade对这个问题的回答中的map函数:
我的问题要么是结果的显示,要么是过程本身不正确。首先插入价格行,然后插入总价行;相反,顺序是相反的,totalPrice出现在价格行的前面。当我在插入totalPrice之前插入一条警告语句时,它工作得很好。有什么建议吗?我的代码怎么了?jQuery是异步编译的吗?Jep。Ajax调用是异步的,这意味着它们不会立即执行。您需要跟踪完成的ajax调用的数量,当所有调用都完成时,您可以追加总数 大概是这样的:
var totalPrice = 0;
var completedAjaxCalls = 0;
map.each(function(key , value , i) {
params = {};
params.id = key;
// get datas from Controller class via ajax
ajax(url, params, false, function(result) {
totalPrice += setData(result , key , value);
completedAjaxCalls += 1;
if(completedAjaxCalls == map.length) {
$('table.viewTable tr:last').after("<tr class='title_bar'><td colspan='5' style='text-align: right;padding-right: 35px;'>"+num2Currency(totalPrice)+"</td></tr>");
}
});
});
var totalPrice=0;
var completedAjaxCalls=0;
映射每个(函数(键、值、i){
params={};
params.id=键;
//通过ajax从控制器类获取数据
ajax(url、参数、false、函数(结果){
totalPrice+=setData(结果、键、值);
completedAjaxCalls+=1;
if(completedAjaxCalls==map.length){
$('table.viewTable tr:last')。在(“+num2Currency(totalPrice)+”之后;
}
});
});
编辑:可能有更好的方法来实现这一点,但是由于您仍然需要掌握异步方法的概念,因此我认为一种简单的方法在这里是合适的 Jep。Ajax调用是异步的,这意味着它们不会立即执行。您需要跟踪完成的ajax调用的数量,当所有调用都完成时,您可以追加总数 大概是这样的:
var totalPrice = 0;
var completedAjaxCalls = 0;
map.each(function(key , value , i) {
params = {};
params.id = key;
// get datas from Controller class via ajax
ajax(url, params, false, function(result) {
totalPrice += setData(result , key , value);
completedAjaxCalls += 1;
if(completedAjaxCalls == map.length) {
$('table.viewTable tr:last').after("<tr class='title_bar'><td colspan='5' style='text-align: right;padding-right: 35px;'>"+num2Currency(totalPrice)+"</td></tr>");
}
});
});
var totalPrice=0;
var completedAjaxCalls=0;
映射每个(函数(键、值、i){
params={};
params.id=键;
//通过ajax从控制器类获取数据
ajax(url、参数、false、函数(结果){
totalPrice+=setData(结果、键、值);
completedAjaxCalls+=1;
if(completedAjaxCalls==map.length){
$('table.viewTable tr:last')。在(“+num2Currency(totalPrice)+”之后;
}
});
});
编辑:可能有更好的方法来实现这一点,但是由于您仍然需要掌握异步方法的概念,因此我认为一种简单的方法在这里是合适的 你需要试一试
var totalPrice = 0;
var requests = [];
map.each(function(key, value, i) {
params = {};
params.id = key;
// get datas from Controller class via ajax
// make sure that `ajax()` return the promise returned by $.ajax()
requests.push(ajax(url, params, false, function(result) {
totalPrice += setData(result, key, value);
}));
});
$.when.apply($, requests).done(function() {
// alert("something!"); // this may satisfy my problem.. I have no idea..
// Total Price show at last row
$('table.viewTable tr:last')
.after("<tr class='title_bar'><td colspan='5' style='text-align: right;padding-right: 35px;'>"
+ num2Currency(totalPrice) + "</td></tr>");
})
var totalPrice=0;
var请求=[];
映射每个(函数(键、值、i){
params={};
params.id=键;
//通过ajax从控制器类获取数据
//确保`ajax()`返回由$.ajax()返回的承诺
push(ajax(url、参数、false、函数(结果)){
totalPrice+=setData(结果、键、值);
}));
});
$.when.apply($,requests).done(函数(){
//警惕(“某物!”;//这也许能解决我的问题..我不知道。。
//最后一行显示的总价
$('table.viewTable tr:last')
.在(“”
+num2货币(总价)+”;
})
您需要试一试
var totalPrice = 0;
var requests = [];
map.each(function(key, value, i) {
params = {};
params.id = key;
// get datas from Controller class via ajax
// make sure that `ajax()` return the promise returned by $.ajax()
requests.push(ajax(url, params, false, function(result) {
totalPrice += setData(result, key, value);
}));
});
$.when.apply($, requests).done(function() {
// alert("something!"); // this may satisfy my problem.. I have no idea..
// Total Price show at last row
$('table.viewTable tr:last')
.after("<tr class='title_bar'><td colspan='5' style='text-align: right;padding-right: 35px;'>"
+ num2Currency(totalPrice) + "</td></tr>");
})
var totalPrice=0;
var请求=[];
映射每个(函数(键、值、i){
params={};
params.id=键;
//通过ajax从控制器类获取数据
//确保`ajax()`返回由$.ajax()返回的承诺
push(ajax(url、参数、false、函数(结果)){
totalPrice+=setData(结果、键、值);
}));
});
$.when.apply($,requests).done(函数(){
//警惕(“某物!”;//这也许能解决我的问题..我不知道。。
//最后一行显示的总价
$('table.viewTable tr:last')
.在(“”
+num2货币(总价)+”;
})
您需要将其移至成功回调。AJAX是异步的。因此,totalPrice
将在以后填充。但是ajax方法下面的语句将立即执行@Sushanth感谢您的回复。。请引导我作为答案。您想说在ajax函数中使用success:in吗?请描述我是如何做到的。你需要将其转化为成功。AJAX是异步的。因此,totalPrice
将在以后填充。但是ajax方法下面的语句将立即执行@Sushanth感谢您的回复。。请引导我作为答案。您想说在ajax函数中使用success:in吗?请描述一下我是如何得到你描述的。。提前谢谢。通过(completedAjaxCalls==map.size())我得到了您描述的结果。。提前谢谢。好像(completedAjaxCalls==map.size())感谢您宝贵的时间。你的回答对我很有用。我也想接受你的回答。提前谢谢你。谢谢你宝贵的时间。你的回答对我很有用。我也想接受你的回答。先谢谢你。