我有这个函数,它从数据库中加载一个select。
function Competition() {
$(document).ready(function() {
$.ajax({
url: "load-comp.php",
cache: false,
success : function(html) {
// something here
}
});
EditRow();
});
}
我需要将select设置在confirmEdit中(在第二个td中)。
EditRow() {
var confirmEdit = '<tr class="editable" id=" '+ id +' ">
<td><input type="text" value="' + name + '" /></td>
<td> ' + /* function result goes here */ + ' </td>
<td><input type="text" value="' + data + '" /></td>
<td>' + saveCancel + '</td>
</tr>';
}
那么如何在变量中保存由Competition()函数生成的结果,以便我可以在EditRow()函数中使用它?
答案 0 :(得分:4)
function Competition() {
$(document).ready(function() {
$.ajax({
url: "load-comp.php",
cache: false,
success : function(html) {
EditRow(html);
}
});
});
}
Ryan的评论是正确的。在原始的EditRow中,可以在检索load-comp.php之前调用它。
答案 1 :(得分:3)
您的数据来自变量名称“html”中的load-comp.php
。因此,您可以修改EditRow函数并将其传递给“html”变量(您可能还需要其他变量)
function EditRow(html, id, name, data, saveCancel) {
var confirmEdit = '<tr class="editable" id=" '+ id +' ">
<td><input type="text" value="' + name + '" /></td>
<td> ' + html + ' </td>
<td><input type="text" value="' + data + '" /></td>
<td>' + saveCancel + '</td>
</tr>';
}
答案 2 :(得分:1)
根据定义,Ajax是异步的。在Ajax调用完成之前,可能会调用EditRow
。为什么不在Ajax调用的成功函数中调用EditRow
?这是唯一可以保证只在完成Ajax后调用函数的方法。完成后,您只需将结果作为参数传递给EditRow
函数。
将EditRow
更改为:
function EditRow(html) {
var confirmEdit = '<tr class="editable" id=" '+ id +' ">'+
'<td><input type="text" value="' + name + '" /></td>'+
'<td> ' + html + ' </td>'+
'<td><input type="text" value="' + data + '" /></td>'+
'<td>' + saveCancel + '</td>'+
'</tr>';
}
然后将ready
功能更改为:
function Competition() {
$(document).ready(function() {
$.ajax({
url: "load-comp.php",
cache: false,
success : function(html) {
EditRow(html);
}
});
});
}