15

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

我用这个插件来编辑数据,编辑后的数据被发送到数据库,一些字段被它更新。更新这些字段的存储过程正在返回一些数据。我希望将这些数据返回给我。我只想先在“警报”语句中查看返回的数据,然后我可以从那里获取它。

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

有没有办法在使用这个插件时从服务器端取回一些数据?

4

6 回答 6

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”}

这将显示在警报中。

于 2009-06-22T22:36:12.833 回答
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);
    }     
});

(如果该值通过服务器验证,只需 response.write 更新的值是什么)

于 2010-07-18T18:36:07.130 回答
3

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

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

于 2009-06-08T19:46:21.660 回答
2

中国用户可以看到这个博客:http ://wxianfeng.com/2009/10/14/rails-in-place-edit-with-jquery

于 2009-11-06T03:06:10.903 回答
0

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

您可以将名为“callback”的 jEditable 回调替换为“success”,它是 jquery ajax 函数中回调的名称。

于 2009-06-08T21:06:30.623 回答
0

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

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

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

var updateInfo = JSON.parse(value);

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

于 2016-08-03T15:35:08.117 回答