Javascript 带RESTAPI的可编辑jQuery网格建议

Javascript 带RESTAPI的可编辑jQuery网格建议,javascript,jquery,rest,jqgrid,grid,Javascript,Jquery,Rest,Jqgrid,Grid,首先,我已经阅读了问题“”,但它没有回答我的问题 我有一个小问题: 获取所有设备: GET /equipements HTTP/1.1 {{_id:key1, name:Test Document 1, plateforme:prod}, {_id:key2, name:Test Document 2, plateforme:prod}, ...} 使用钥匙获取装备:钥匙1 GET /equipements/key1 HTTP/1.1 {"_id": "key1", "name": "Test

首先,我已经阅读了问题“”,但它没有回答我的问题

我有一个小问题:

获取所有设备:

GET /equipements HTTP/1.1
{{_id:key1, name:Test Document 1, plateforme:prod}, {_id:key2, name:Test Document 2, plateforme:prod}, ...}
使用钥匙获取装备:钥匙1

GET /equipements/key1 HTTP/1.1
{"_id": "key1", "name": "Test Document 1", "plateforme": "prod"}
增加新设备

PUT /equipements HTTP/1.1  {"_id": "key8", "name": "Test Document 3", "plateforme": "prod"}
HTTP/1.0 200 OK
现在,我需要找到一种简单的方法来允许lambda用户添加/查看/删除设备。因此,我认为具有类似jQuery的UI的web界面是最好的。我使用了javascript,但我不知道javascript,并且我无法调整示例

如何修复REST后端的javascript?

和/或

您能推荐一种比Sencha Rest代理更简单的替代方案吗?(可与我的Rest后端一起使用)

回答:jqGrid

和/或

您建议我使用什么jQuery网格?(它与我的REST后端一起使用)

回答:jqGrid

最后一个问题:为什么我的单元格不能通过双击进行编辑

附录

服务器端(编辑:添加方法发布)

#/usr/bin/python
导入json
进口瓶
从瓶子导入静态_文件、路由、运行、请求、中止、响应
导入simplejson
进口pymongo
从pymongo导入连接
导入日期时间
类MongoEncoder(simplejson.JSONEncoder):
def默认值(自身、obj):
#将所有ITerable转换为列表
如果hasattr(obj,'.'iter'):
退货清单(obj)
#将游标转换为列表
elif isinstance(对象,pymongo.cursor.cursor):
退货清单(obj)
#将ObjectId转换为字符串
elif isinstance(对象,pymongo.objectid.objectid):
返回unicode(obj)
#解引用DBRef
elif isinstance(对象,pymongo.dbref.dbref):
返回数据库取消引用(obj)
#将日期转换为字符串
elif isinstance(obj,datetime.datetime)或isinstance(obj,datetime.date)或isinstance(obj,datetime.time):
返回unicode(obj)
返回simplejson.JSONEncoder.default(self,obj)
连接=连接('localhost',27017)
db=connection.mydatabase
@路由(“/static/”)
def send_静态(文件名):
返回静态文件(文件名,root='/home/igs/restlite/static')
@路由(“/”)
def send_static():
返回静态文件('index.html',root='/home/igs/restlite/static/'))
@路线('/Equipments',method='PUT')
def put_设备():
data=request.body.readline()
如果没有数据:
中止(400,“未收到数据”)
entity=json.load(数据)
如果不是实体,则实体具有“U键”(“U id”):
中止(400,“未指定id”)
尝试:
db['Equipments'].保存(实体)
除ValidationError作为ve外:
中止(400,str(ve))
@路线('/Equipments',method='POST')
def post_设备():
data=request.forms
如果没有数据:
中止(400,“未收到数据”)
实体={}
对于data.items()中的k,v:
实体[k]=v
如果不是实体,则实体具有“U键”(“U id”):
中止(400,“未指定id”)
尝试:
db['Equipments'].保存(实体)
除ValidationError作为ve外:
中止(400,str(ve))
@路由('/equipments/:id',methodd='GET')
def get_设备(id):
entity=db['equipments']。查找一个({''uid':id})
如果不是实体:
中止(404,'没有id为%s“%id”的设备)
返回实体
@路由('/Equipments',methodd='GET')
def get_设备():
entity=db['equipments'].find({})
如果不是实体:
中止(404,“无设备”)
response.content_type='application/json'
条目=[实体中条目的条目]
返回MongoEncoder().encode(条目)
运行(主机=0.0.0.0',端口=80)
编辑:JQGrid:


Rest代理示例
jQuery(文档).ready(函数(){
var lastsel;
jQuery(“#list2”).jqGrid({
网址:'Equipments',
数据类型:“json”,
colNames:['Id','Name','platforme'],
colModel:[
{名称:''u id',索引:''u id',宽度:50,可编辑:true},
{name:'name',index:'u id',宽度:300,可编辑:true},
{名称:'platforme',索引:'total',宽度:200,对齐:“right”,可编辑:true},
],
rowNum:30,
行列表:[10,20,30],
寻呼机:'pager2',
sortname:“\u id”,
viewrecords:是的,
宽度:600,
高度:“100%”,
巫师:“描述”,
onSetRow:函数(\u id){
如果(_id&&u id!==lastsel){
jQuery('#list2').jqGrid('restoreRow',lastsel);
jQuery('#list2').jqGrid('editRow','u id,true);
lastsel=\u id;
}
},
jsonReader:{
重复项:false,
id:“_id”,
根:函数(obj){return obj;},
记录:函数(obj){return obj.length;},
第页:函数(obj){return 1;},
总计:函数(obj){return 1;}
},
editurl:“设备”,
描述:“装备”
});
jQuery(“#list2”).jqGrid('navGrid','#pager2',{edit:true,add:true,del:true});
});


您可以使用jqGrid与RESTfull服务进行通信。jqGrid支持树编辑模式:单元编辑、内联编辑和表单编辑。此外,可以用不同的方式初始化内联编辑。例如,可以调用
onsetrow
ondblClickRow
回调中的方法,或者使用在工具栏中添加“删除”按钮,以及添加“添加”和“编辑”按钮。另一种方法是在网格的一列中包含“编辑”按钮。你可以在这里找到所有的方法。您可以在中找到更多技术实现细节

我个人认为,了解RESTfull服务在web前端使用的另一个重要方面很重要。问题是标准的RESTfull API没有任何用于数据排序、分页和过滤的标准接口。我试着在下面解释这个问题。在这之后,我希望我的建议将变得清晰,即使用具有附加参数并提供排序、分页和过滤功能的附加方法扩展当前的标准restfullapi