如何摆脱jquery(jeditable)混乱

时间:2009-06-08 19:29:14

标签: jquery jeditable

我不是很擅长jQuery,但决定在我的网站上使用jEditable插件,因为我认为它看起来不错并且解决了目的。但是,我现在有点纠结。

我使用这个插件编辑数据,编辑后的数据被发送到数据库,一些字段由它更新。更新这些字段的存储过程将返回一些数据。我想把这些数据还给我。我想首先在'alert'语句中看到返回的数据,然后我可以从那里获取它。

此插件的回调方法只有值和设置。

使用此插件时,有没有办法从服务器端获取一些数据?

6 个答案:

答案 0 :(得分:14)

我为我的网站做了这个。这应该可以帮到你。

$("#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”}

这将显示在警报中。

答案 1 :(得分:9)

我一直在使用经典ASP试图解决这个问题,并认为像我这样的其他人也可能会在这里结束。以下是我在经典ASP中解决这个问题的方法:

服务器验证失败...来自 whatever.asp

的回复
<%
response.status "406 Not Acceptable"
response.write "error message here"
response.end
%>

无论发送的任何错误消息 whatever.asp 都可以通过onerror:访问,该字段将重置为原始值。

$("#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);
    }     
});

(如果值通过服务器验证,只需响应。写入更新的值)

答案 2 :(得分:3)

您要提交更新的URL(将是某种动态页面,如PHP,JSP,Java servlet等)是否将存储过程的返回值添加到响应中?如果是这样,我希望数据显示在它们传递给回调的“值”字段中。

当我使用jEditable在线演示时,响应只包含更新的文本,但这是他们使用的特定PHP代码的功能,与jEditable javascript代码没有任何关系。

答案 3 :(得分:2)

答案 4 :(得分:0)

似乎jEditable是jquery ajax方法的包装器。  使用jquery的本机ajax方法调用替换所有jEditable调用应该不会太困难。

您可以使用'success'替换名为'callback'的jEditable回调,'success'是jquery的ajax函数中的回调名称。

答案 5 :(得分:0)

文档说'回调'函数的第一个参数是“value”:

'callback': function (value, settings) {
...

文档所说的是这里的“值”是服务器写出的内容。它不限于原始值。我发回一个JSON编码的结构,所以我的回调函数的第一行是这样的:

var updateInfo = JSON.parse(value);

然后我根据需要从updateInfo结构中提取字段。