2014-09-25 34 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