Цитирование Ajax-запроса - PullRequest
       18

Цитирование Ajax-запроса

0 голосов
/ 30 декабря 2011

Я пытаюсь отправить 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>"
    }))
});

Я новичок в веб-разработке, если кто-то может указатьмне в правильном направлении (некоторые пояснения о порядке цитирования), которые очень помогли бы,

thx,

M.

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Пумба был прав насчет обратного вызова 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>'});
    }
});
0 голосов
/ 30 декабря 2011

Ваше значение 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...
    }
});
...