как выйти из jquery (jeditable) беспорядка - PullRequest
15 голосов
/ 08 июня 2009

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

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

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

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

Ответы [ 6 ]

14 голосов
/ 23 июня 2009

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

$("#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 формы

{"Message" = "FOO"}

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

9 голосов
/ 18 июля 2010

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

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

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

Какое бы сообщение об ошибке what.asp не было отправлено, можно получить доступ через onerror:, и поле будет сброшено до исходного значения.

$("#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);
    }     
});

(и если значение проходит проверку на сервере, просто response.write, каким бы ни было обновленное значение)

3 голосов
/ 08 июня 2009

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

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

2 голосов
/ 06 ноября 2009

китайский пользователь может видеть этот блог: http://wxianfeng.com/2009/10/14/rails-in-place-edit-with-jquery

0 голосов
/ 03 августа 2016

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

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

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

var updateInfo = JSON.parse(value);

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

0 голосов
/ 09 июня 2009

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

Вы можете заменить обратный вызов jEditable с именем callback на «success», который является именем обратного вызова в ajax-функции jquery.

...