Я использовал плагин JEditable для JQuery, и я хотел бы возвратить ошибки плагину, чтобы дать ему команду вернуться к предыдущему значению, а также отобразить ошибку для пользователя. У меня это работает с использованием синхронного вызова AJAX, но я бы предпочел использовать вместо этого асинхронный обратный вызов. Код, который я должен далеко, ниже.
$("#editbox").editable(submitEdit, {
indicator : "Saving...",
tooltip : "Click to edit...",
name : "Editable.EmailAddress",
id : "elementid",
type : "text",
submit : "<span class=\"mini_button\">Ok</span>",
cssclass : "edit_text"
});
function submitEdit(value, settings)
{
var edits = new Object();
var origvalue = this.revert;
var textbox = this;
edits[settings.name] = [value];
var returned = $.ajax({
url: "http://someurl.com/edit/",
type: "POST",
/*async: false,*/
data : edits,
dataType : "json",
complete : function (XMLHttpRequest, textStatus)
{
alert("Setting back to original value " +origvalue);
$(textbox).html(origvalue);
}
});
/*var response = $.secureEvalJSON(returned.responseText);
if (response.errorMsg != '')
{
$("#ajaxNotify").addClass("ajax_error").html(response.errorMsg);
return(this.revert);
}*/
return(value);
}
Я также включил мою синхронную реализацию в комментарии, которая работает хорошо. В сценарии с высокой нагрузкой на сервер это блокирует браузер до тех пор, пока редактирование не завершится на серверной части. Скорее, это вернет значение и вернет его позже, если редактирование не удастся.
Спасибо
EDIT
После попытки предложить джиттерс и заставить его работать в IE8, я понял, что проблема была с FF и chrome, когда я нажимал кнопку только . Если я щёлкну по полю, отредактирую, а затем нажму Enter, все в порядке. Обратный вызов срабатывает, и значение сбрасывается.
Если я щелкну по полю, отредактирую, а затем нажму кнопку ОК, и не получу сообщение об ошибке проверки, тогда форма останется активной и просто окажется там. Если получена ошибка, что часть выполняется, текстовое значение возвращается к исходному, однако затем я не могу снова щелкнуть поле, кажется, jeditable был освобожден.
Я могу подтвердить, что почта и ответы принимаются в firebug, поэтому Ajax стреляет.
{ "ErrorMsg": ""}
Почему это прекрасно работает во всех браузерах, если я нажимаю клавишу ввода, но не нажимаю кнопку ОК? Один и тот же код выполняется в любом случае, и кнопка точно отправляет форму правильно.
Отвязывание также происходит только при нажатии кнопок.
Есть ли у кого-нибудь примеры использования jeditable и решения проблем проверки на стороне сервера, таких как эти?