Как мне использовать Yahoo YUI для редактирования встроенных ячеек, которые записывают в базу данных?

#javascript #yui #yahoo

#javascript #yui #yahoo

Вопрос:

Итак, у меня есть настройка datatable с использованием YUI 2.0. И для одного из моих определений столбцов я настроил его так, что при нажатии на ячейку появляется набор переключателей, чтобы вы могли изменять содержимое этой ячейки.

Я хочу, чтобы все внесенные изменения отражались в базе данных. Поэтому я подписываюсь на radioClickEvent. Вот мой код для этого:

Например.myDataTable.subscribe(«radioClickEvent», функция (oArgs){

                     // hold the change for now
                    YAHOO.util.Event.preventDefault(oArgs.event);
                    // block the user from doing anything
                    this.disable();

                    // Read all we need
                    var elCheckbox = oArgs.target,
                        newValue = elCheckbox.checked,
                        record = this.getRecord(elCheckbox),
                        column = this.getColumn(elCheckbox),
                        oldValue = record.getData(column.key),
                        recordIndex = this.getRecordIndex(record),
                        session_code = record.getData('session_code');
                    alert(newValue);

                    // check against server
                    YAHOO.util.Connect.asyncRequest(
                        "GET",
                        "inlineeddit.php?sesscode=session_codeamp;", 
                        {
                            success:function(o) {
                                alert("good");
                                var r = YAHOO.lang.JSON.parse(o.responseText);
                                if (r.replyCode == 200) {
                                    // If Ok, do the change
                                    var data = record.getData();
                                    data[column.key] = newValue;
                                    this.updateRow(recordIndex,data);
                                } else {
                                    alert(r.replyText);
                                }
                                // unblock the interface
                                this.undisable();
                            },
                            failure:function(o) {
                                alert("bad");
                                //alert(o.statusText);
                                this.undisable();
                            },
                            scope:this
                        }

                    );                                              
                });

    Ex.myDataTable.subscribe("cellClickEvent", Ex.myDataTable.onEventShowCellEditor);    
  

Но когда я запускаю свой код, нажимаю на ячейку и переключаю переключатель, никогда ничего не происходит. Я смотрю на это уже некоторое время и понятия не имею, что я делаю не так. Я знаю, что вы также можете использовать asyncsubmitter в моем определении столбца, я полагаю, и я пробовал это, но у меня это тоже не сработало.

Любые идеи будут высоко оценены.

Комментарии:

1. Почему вы избегаете кавычек здесь: record.getData('session_code'); ?

2. Этот код был написан как часть инструкции echo в php. Я мог бы поместить это в обычные кавычки, а также «session_code»

3. Одна вещь, которую я не упомянул в своем первоначальном сообщении, заключается в том, что если я просто для тестирования изменю «radioClickEvent» на «cellClickEvent», тогда моя подписка будет работать, и она попытается выполнить asyncrequest и т.д. Но с radioClickEvent (а также с checkboxClickEvent) ничего не работает. Я не уверен, что это вообще помогает.