2014-09-25 62 views
1

我很确定,我搞砸了。AJAX - Django - 更好的方法?

我做ajax请求获取对象的一些信息。

$.ajax({ 
    url: "/get_obj_ajax/", 
    type: "get", 
    data: {id:id} 
}).done(function(data){ 
    if(data!='bad'){ 
     data = data.split('°'); 
     var objtitle = data[0]; 
     var objcontent = data[1]; 
     .. 
}); 

和Django的观点:

def get_obj_ajax(request): 
    if request.method == "GET": 
    obj= MyModel.objects.get(id=int(request.GET.get('id'))) 
    data = obj.title + '°' + obj.content 
    return HttpResponse(data) 
    return HttpResponse('bad') 

这就是我通常做。但是今天在我吃午饭的时候,我想,这个肯定有一些更专业的方法..因为我觉得这个代码太笨了。如果突然content我obj有°在里面,解析出错了。

..任何指导将不胜感激。

+0

有啥看起来像你的OBJ?你能举个例子吗? – Kasramvd 2014-09-25 14:37:06

+0

@Kasra obj ist只是一个简单的对象。例如带有标题和内容的书。没什么特别的 – doniyor 2014-09-25 14:39:12

回答

1

可以返回json data

def get_obj_ajax(request): 
    import json 
    data={"issuccess": 'no'} 
    if request.method == "GET": 
    obj= MyModel.objects.get(id=int(request.GET.get('id'))) 
    data = {"issuccess": 'yes',"title":obj.title ,"content": obj.content} 
    return HttpResponse(json.dumps(data), content_type="application/json") 
模板

if(data.issuccess == 'yes'){ 

    var objtitle = data.title; 
    var objcontent = data.content; 
}... 
+0

这看起来比我的要冷。谢谢 – doniyor 2014-09-25 14:39:37

+1

@ doniyor乐于帮助。我希望你不需要转换为'int',即'Mymodel.objects.get(id = request.GET ['id'])'很好。也更好地检查的关键'ID'即:如果request.method =='GET'和'ID'request.GET:' – suhailvs 2014-09-25 14:47:25

+0

谢谢你,好东西。 – doniyor 2014-09-25 15:27:42