【发布时间】:2014-10-22 20:17:50
【问题描述】:
我一直在试图弄清楚为什么现在这不起作用太久了。看来是时候寻求帮助了。
我有使用X-Editable 的Javascript。我的页面向我的服务器提交了一个 AJAX 请求。我的服务器使用包含 db 键的 JSON 响应。唯一的问题是,Chrome 无法识别 JSON。
开发工具显示响应为:
HTTP/1.1 200 OK
Date: Wed, 22 Oct 2014 20:04:12 GMT
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Type: text/javascript;charset=UTF-8
Content-Length: 30
Server: Jetty(7.6.13.v20130916)
{"success":true,"actionid":66}
我不认为在规范中取得成功,但 X-Editable 引用了它。我试过把它进出,它没有任何区别。
以下函数处理提交 AJAX 请求并处理成功/失败。只是,由于某种原因没有调用成功例程。
$('#save-btn').click(function() {
$('.new-link-param').editable('submit', {
url: '/newlink',
ajaxOptions: {
type: 'post'
},
success: function (data, config) {
// console.log(JSON.stringify(data));
// console.log(data.actionid);
// console.log(typeof data);
// if(data && data.actionid){ // assumes response like {"actionid": 2}
// alert(true);
// $(this).editable('option', 'actionid', data.actionid);
// $(this).removeClass('editable-unsaved');
// var msg = "Link saved.";
// $('#msg').addClass('alert-success').remove.Class('hidden').removeClass('alert-error').html(msg).show();
// $(this).off('save.newuser');
// }
// else if(data && data.errors){
// config.error.call(this, data.errors);
//}
alert(true);
},
error: function(errors) {
alert(false);
var msg = "";
if(errors && errors.responseText){
msg = errors.responseText;
} else {
console.log("Error: " + errors.responseText);
}
}}).editable('destroy').removeClass().removeAttr('id').parent().parent().children("button").remove();
});
}
当天早些时候,成功函数 被调用,但内部的 if 语句返回 false,好像数据存在一样。由于某种原因, data.actionid 未定义。不知道为什么这会改变。鉴于我在上面粘贴的回复,我认为它应该受到打击。
我想知道我需要做什么才能让 JS 代码注册成功并识别返回给它的 JSON。
【问题讨论】:
标签: jquery ajax json x-editable