我正在尝试使用原型框架发送Ajax请求,该框架在成功时向我的表(现有)添加新行。我已经成功地请求了其他功能,但我不能让这个工作。我确信它与我在插入html中的引号(嵌套引号)有关。
这个问题帮助我解决了上一个函数的问题,但在这个函数中,引号仍然更复杂。
这是一个关于插入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>"
}))
});
我对web开发很陌生,如果有人能给我指出正确的方向(一些关于报价顺序的解释),那将帮助很大,
thx,
m .
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>'});
}
});
您的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...
}
});