Как выйти из jquery (jeditable) mess

Я не очень хорошо разбираюсь в jQuery, но решил использовать jEditable плагин для моего сайта, потому что я думал, что он выглядит хорошо и решил цель, Однако сейчас я немного запутан.

Я использовал этот плагин для редактирования данных, и отредактированные данные отправляются в БД, а некоторые поля обновляются им. Хранимая процедура, которая обновляет эти поля, возвращает некоторые данные назад. Я бы хотел, чтобы эти данные вернулись ко мне. Я просто хотел бы сначала увидеть возвращенные данные в предложении "alert", затем я могу взять его оттуда.

Метод обратного вызова этого плагина имеет только значения и настройки.

Есть ли способ вернуть некоторые данные с серверной стороны при использовании этого плагина?

Ответы

Ответ 1

Я сделал именно это для своего сайта. Это должно заставить вас начать.

$("#editable_text").editable(submitEdit, { 
            indicator : "Saving...",
            tooltip   : "Click to edit...",
            name : "Editable.FieldName",
            id   : "elementid",
            type : "text",
});
function submitEdit(value, settings)
{ 
   var edits = new Object();
   var origvalue = this.revert;
   var textbox = this;
   var result = value;
   edits[settings.name] = [value];
   var returned = $.ajax({
           url: "http://URLTOPOSTTO", 
           type: "POST",
           data : edits,
           dataType : "json",
           complete : function (xhr, textStatus) 
           {
               var response =  $.secureEvalJSON(xhr.responseText);
               if (response.Message != "") 
               {
                   alert(Message);
               } 
           }
           });
   return(result);
 }

Вам нужно вернуть ответ Json формы

{ "Сообщение" = "FOO" }

И это будет отображаться в предупреждении.

Ответ 2

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

Отказ от проверки сервера... от what.asp

<%
response.status "406 Not Acceptable"
response.write "error message here"
response.end
%>

К любому сообщению об ошибке whatever.asp можно получить доступ через onerror:, а поле будет reset к исходному значению.

$("#editable_text").editable("whatever.asp", { 
    indicator : "Saving...",
    tooltip   : "Click to edit...",
    type : "text",
    onerror: function (settings, original, xhr) {
        original.reset();
        //do whatever you want with the error msg here
        alert(xhr.responseText);
    }     
});

(и если значение проходит проверку сервера, просто ответьте. запишите все обновленное значение)

Ответ 3

Является ли URL-адрес, по которому вы отправляете обновления (это будет какая-то динамическая страница, такая как PHP, JSP, сервлет Java и т.д.), добавив возвращаемое значение из хранимой процедуры в ответ? Если это так, я бы ожидал, что данные появятся в поле "значение", которое они передадут на обратный вызов.

Когда я использую jEditable онлайн-демонстрацию, ответ включает только обновленный текст, но функцию определенного кода PHP, которую они используют, и не имеет ничего общего с jEditable кодом javascript.

Ответ 5

Похоже, jEditable - это обертка вокруг jQuery ajax-методов.  Не стоит слишком сложно заменять все ваши jEditable-вызовы вызовами, использующими собственный метод ajax jquery.

Вы можете заменить jEditable callback с именем "callback" на "success", который является именем обратного вызова в jQuery ajax.

Ответ 6

В документации говорится, что первым параметром функции "обратного вызова" является "значение":

'callback': function (value, settings) {
...

Что делает документация не, так это то, что "значение" здесь - это то, что выписывает сервер. Это не ограничивается необработанной стоимостью. Я отправляю обратно структуру JSON-кодировки, поэтому первая строка моей функции обратного вызова такова:

var updateInfo = JSON.parse(value);

И затем я вытягиваю поля по мере необходимости из структуры updateInfo.