gpt4 book ai didi

jquery - Jeditable 错误时异步恢复

转载 作者:行者123 更新时间:2023-12-01 00:12:59 24 4
gpt4 key购买 nike

我一直在使用 JQuery 的 JEditable 插件,我想向插件返回错误以指示它恢复到以前的值并向用户显示错误。我使用同步 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);
}

我还在评论中包含了我的同步实现,效果很好。在服务器负载较高的情况下,这将锁定浏览器,直到后端编辑完成。我宁愿返回该值,并在编辑失败时将其恢复回来。

谢谢

编辑

在尝试 jitters 建议并让它在 IE8 中工作后,当我单击按钮时,我意识到问题出在 FF 和 chrome 上。如果我单击该字段,进行编辑,然后按 Enter 键,一切都很好。回调触发并且值被重置。

如果我单击该字段,进行编辑,然后单击“确定”按钮,并且没有收到验证错误,则表单将保持事件状态并停留在那里。如果该部分执行时收到错误,文本值将恢复为原始值,但是我无法再次单击该字段,jeditable 似乎已解除​​绑定(bind)。

我可以确认 firebug 中正在收到帖子和回复,因此 ajax 正在触发。

{"errorMsg":""}

为什么如果我按 Enter 键,它在所有浏览器中都可以正常工作,但如果我单击“确定”按钮,则不能?无论哪种方式都会执行相同的代码,并且按钮肯定会正确提交表单。

解除绑定(bind)也仅在按下按钮时发生。

有人有使用 jeditable 和处理此类服务器端验证问题的示例吗?

最佳答案

这根本不起作用吗?

...
complete : function (xhr, textStatus) {
$.secureEvalJSON(xhr.responseText);
if (response.errorMsg != '') {
$("#ajaxNotify").addClass("ajax_error").html(response.errorMsg);
alert("Setting back to original value " +origvalue);
$(textbox).html(origvalue);
}
}
...

关于jquery - Jeditable 错误时异步恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1021444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com