我正在尝试使用原型框架发送Ajax请求,该框架在成功时向我的表(现有)添加新行。 我已经用其他功能提出了成功的请求,但我无法使用这个功能。我确信与插入html(嵌套引号)中的引用有关。
this问题帮助了我以前的功能,但在这个问题中,引用仍然比较复杂。
this是插入html
的主题new Ajax.Request('switch.php', {
method: 'post',
postBody: 'action=addHour&addday=' + addday + '&addhour=' + addhour + '&addminute=' + addminute + '',
onSuccess: ($('tbl_' + addday + '').down('tr').insert({
Bottom: "<TR ALIGN=LEFT VALIGN=TOP><TD id='var_" + adday + "" + addhour + "" + addminute + "' value='" + addhour ":" + addminute + "'></TD><TD id='del_" + adday + "" + addhour + "" + addminute + "'><input type='button' value='Del' onClick='deleteHour(" + addhour + "" + addminute + ", " + addday + ")'></TD></TR>"
}))
});
我对网络开发很陌生,如果有人能指出我正确的方向(对引用顺序的一些解释)会有很大的帮助,
THX,
微米。
答案 0 :(得分:0)
您的onSuccess
值应为function
。您实际上是在这里传递函数调用的结果。您的代码等同于
var os = ($('tbl_' + addday + '').down('tr').insert({
Bottom: "<TR ALIGN=LEFT VALIGN=TOP><TD id='var_" + adday + "" + addhour + "" + addminute + "' value='" + addhour ":" + addminute + "'></TD><TD id='del_" + adday + "" + addhour + "" + addminute + "'><input type='button' value='Del' onClick='deleteHour(" + addhour + "" + addminute + ", " + addday + ")'></TD></TR>"
}));
new Ajax.Request('switch.php', {
method: 'post',
postBody: 'action=addHour&addday=' + addday + '&addhour=' + addhour + '&addminute=' + addminute + '',
onSuccess: os
});
这不是你想要的。你可能想要这个:
var os = function () {
$('tbl_' + addday + '').down('tr').insert({
Bottom: "<TR ALIGN=LEFT VALIGN=TOP><TD id='var_" + adday + "" + addhour + "" + addminute + "' value='" + addhour ":" + addminute + "'></TD><TD id='del_" + adday + "" + addhour + "" + addminute + "'><input type='button' value='Del' onClick='deleteHour(" + addhour + "" + addminute + ", " + addday + ")'></TD></TR>"
});
};
new Ajax.Request('switch.php', {
method: 'post',
postBody: 'action=addHour&addday=' + addday + '&addhour=' + addhour + '&addminute=' + addminute + '',
onSuccess: os
});
或直接:
new Ajax.Request('switch.php', {
method: 'post',
postBody: 'action=addHour&addday=' + addday + '&addhour=' + addhour + '&addminute=' + addminute + '',
onSuccess: function () {
$( // etc...
}
});
答案 1 :(得分:0)
Pumbaa关于onSuccess回调是正确的;它需要是一个功能。将输入字段包装在表单元素中是一种很好的做法。我通过在它们之间放置一个空字符串来看到你试图用'add'变量做的事情,但是如果你先把它们作为字符串,你就不必这样做了。这简化了你的代码。我重写了你的代码,使其更具可读性。
new Ajax.Request('switch.php', {
method: 'post',
parameters: {
action: "addHour",
addday: addday,
addhour: addhour,
addminute: addminute
},
onSuccess: function(e) {
addday = addday.toString();
addhour = addhour.toString();
addminute = addminute.toString();
$('tbl_' + addday).down('tr').insert({bottom: '<TR ALIGN=LEFT VALIGN=TOP>\
<TD id="var_"' + addday + addhour + addminute + '" value="' + addhour + ":" + addminute + '"></TD>\
<TD id="del_"' + addday + addhour + addminute + '">\
<form>\
<input type="button" value="Del" onClick="deleteHour(' + addhour + addminute + ', ' + addday + ')">\
</form>\
</TD>\
</TR>'});
}
});