0

我正在尝试使用原型框架发送 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>"
    }))
});

我对网络开发很陌生,如果有人能指出我正确的方向(关于引用顺序的一些解释),那将有很大帮助,

谢谢,

M。

4

2 回答 2

0

关于 onSuccess 回调,Pumbaa 是正确的;它必须是一个函数。将输入字段包装在表单元素中是一种很好的做法。我看到你试图通过在它们之间放置一个空白字符串来处理“添加”变量,但如果你先将它们设为字符串,你就不必这样做了。这会稍微简化您的代码。我重写了您的代码以使其更具可读性。

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>'});
    }
});
于 2012-01-06T01:18:17.300 回答
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...
    }
});
于 2011-12-30T15:59:51.850 回答