我一直在使用JEditable JQuery插件,我想將錯誤返回給插件,以指示它恢復到以前的值,並向用戶顯示錯誤。我有這個工作使用同步ajax調用,但我寧願使用異步回調。我需要的代碼在下面。Jeditable異步恢復出錯
$("#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);
}
我還包括我的同步實現在評論中運作良好。在高服務器負載情況下,這會鎖定瀏覽器,直到編輯在後端完成。如果編輯失敗,則返回該值並稍後恢復。
感謝,
編輯
試圖抖動建議,並得到它在IE8的工作之後,我意識到這個問題是與FF和鉻當我點擊按鈕唯一。如果我點擊字段,編輯,然後按輸入一切都很好。回調觸發並且值被重置。
如果我單擊該字段,編輯然後單擊確定按鈕,不會收到和驗證錯誤,然後窗體保持活動,只是坐在那裏。如果接收到該部分執行的錯誤,文本值將恢復爲原始值,但是我不能再次單擊該字段,jeditable似乎已解除綁定。
我可以確認郵件和回覆正在螢火蟲中收到,所以阿賈克斯正在射擊。
{「ERRORMSG」:「」}
爲什麼這個工作完全在所有瀏覽器,如果我按enter但如果我點擊確定按鈕?無論哪種方式執行相同的代碼,並且按鈕肯定會正確提交表單。
解除綁定的事情也只發生在按鈕按下。
有沒有人有任何使用jeditable和處理服務器端驗證問題的例子,如這些?
我已經嘗試過5次解決方案,它沒有工作,但現在它確實!看起來,當我在FireBug的回調的最後一行放置一個斷點時,它將它填滿。在試圖調試我打破了它!我無法弄清楚發生了什麼事。哦,謝謝你指出我的愚蠢:)。 – madcapnmckay 2009-06-20 12:29:49