Как выйти из 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.
Ответ 4
Китайский пользователь может видеть этот блог: http://wxianfeng.com/2009/10/14/rails-in-place-edit-with-jquery
Ответ 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.