我正在使用jQuery jEditable在就地编辑字段,但是当JSON函数返回并且我尝试从我的编辑就地回调中返回一个值时,我得到的是一个闪存
你可以在这里看到......
http://clareshilland.unknowndomain.co.uk/
按Ctrl + L登录...
用户名:stackoverflow
密码:jquery
虽然你可以看到/script.js中的脚本是主要代码exerpt ...
$('#menu li a').editable(edit_menu_item, { cssclass: 'editable' });
这是回调:
function edit_menu_item(value, settings) {
$.ajax({
type : "POST",
cache : false,
url : 'ajax/menu/edit-category.php',
dataType: 'json',
data : { 'id': this.id, 'value': value },
success : function(data) {
if (data.status == 'ok') {
alert('ok');
return data.title;
} else {
alert('n/ok');
return this.revert;
}
}});
}
JSON代码在这里:ajax / menu.edit-category.php
就地编辑就在菜单上,该菜单上还有一个jQuery可排序。单击即可编辑。输入以保存,它会存储数据,但不会在“就地编辑”字段中更新数据。
请帮助stackoverflow,我一直在努力解决这个问题。
提前致谢!
答案 0 :(得分:4)
从可编辑的主页(http://www.appelsiini.net/projects/jeditable):
请注意,函数必须返回字符串。 通常是编辑过的内容。这将 编辑后显示在页面上 完成。
edit_menu_item不返回字符串 - 看起来您可以通过返回值来解决这个问题,然后如果您需要更新实际内容,请在ajax请求的成功回调中执行此操作。您可能还想添加一个错误回调,以防万一。
另一种可能是个坏主意的方法是将你的ajax调用标记为同步(async:false)并查看responseText,但这会锁定页面直到你的请求完成。
答案 1 :(得分:1)
从服务器端传递json对象,这将被Javascript视为文本。您必须使用var myObject = JSON.parse(myJSONtext);
PHP代码
$response = new stdClass();
$response->value = $value;
print_r(json_encode($response));
Js Code
//(in Jeditable callback)
"callback": function( sValue, y ) {
sValue = JSON.parse(sValue);
//now you can access sValue.value
}
答案 2 :(得分:0)
我遇到了同样的问题,因此我通过引入回调修改了Jeditable源代码,以便我可以从AJAX“succes”处理程序中返回字符串值。
之前的来源Jeditable:
/* check if given target is function */
if ($.isFunction(settings.target)) {
var edit = self;
settings.target.apply(self, [input.val(), settings, function(str){
$(edit).html(str);
edit.editing = false;
}
]);
} else {
来源Jeditable之后:
var fruits = [];
var fruit = new Object;
fruit.name = apple;
fruit.color = red;
fruits.push(fruit);
在你的成功处理程序中: