我一直在使用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