2012-06-08 29 views
1

我使用jQuery自動完成插件http://www.devbridge.com/projects/autocomplete/jquery/在我的web應用程序中提供搜索建議,我希望以json格式發送響應。Django - simplejson響應

Django的views.py發送的建議迴應:

def keywords_suggestions(request): 
     if request.is_ajax(): 
       suggestions = [] 
       q = request.POST.get('q') 
       try: 
         g = KeywordsModel.objects.filter(keyword__startswith=q).order_by('count') 
       except KeywordsModel.DoesNotExist: 
         return HttpResponse("") 
       else: 
         for i in range(0,len(g)): 
           global suggestions 
           suggestions.append(g[i].keyword) 
           to_json = { 
             "query": q, 
             "suggestions": suggestions 
           } 
         return HttpResponse(simplejson.dumps(to_json), mimetype='application/json') 

Django的models.py

class KeywordsModel(models.Model): 
     keyword = models.CharField(max_length=40, blank=False) 
     count = models.IntegerField(max_length=20) 

     def __unicode__(self): 
      return self.keyword 

jQuery代碼:

$("#add-keywords").keyup(function() { 
    $('#add-keywords').autocomplete({ 
      serviceUrl:'/keywords_suggestions', 
      minChars:3, 
      maxHeight:220, 
      width:280, 
      zIndex: 9999, 
      params: { q: $('#add-keywords').val() }, 
      onSelect: function(value, data){ $('#add-keywords').val(value); }, 
    }); 
}); 

我得到這個當我在#add-keywords文本框中輸入時出錯

Request URL:http://127.0.0.1:8000/keywords_suggestions/?q=web&query=web 
Request Method:GET 
Status Code:500 INTERNAL SERVER ERROR 

UPDATE

ValueError at /keywords_suggestions/ 
The view information.views.keywords_suggestions didn't return an HttpResponse object. 

UPDATE-2

我有在建議疑問變量,也許全球的建議將有問題

。我做對了嗎?

任何人都可以指導我使它工作嗎?

UPDATE-3

<input type="text" id="add-keywords" name="add-keywords" title="e.g. Web developer, Javascript, Musician, Jazz" /> 

如何獲得#添加的關鍵字文本框的Django的views.py值。這是否工作q = request.POST.get('add-keywords')

謝謝!

+1

導航到http://127.0.0.1:8000/keywords_suggestions/?q=web&query=web,您應該會看到錯誤消息。 – alexn

+0

打開firebug - > console - > ctrl F5 - >控制檯錯誤 - >右鍵單擊並在新標籤頁中打開以查看錯誤 –

+0

請檢查更新後的問題。謝謝! – rnk

回答

1

request.is_ajax()返回False

+0

爲什麼?你能更具描述性嗎? – rnk

+0

也許這會幫助你。 HTTP://計算器。com/questions/7755899/django-says-is-ajax-is-false-on-a-jquery-ajax-request – iMom0

+0

請檢查更新後的問題 – rnk

0

條件分支

try: 
    g = KeywordsModel.objects.filter(keyword__startswith=q).order_by('count') 
except KeywordsModel.DoesNotExist: 
    return HttpResponse("") 
else: 
    ... 

也可能失敗,因爲ValueError如果,例如,request.POST.get('q')導致None

另外,嘗試'/keywords_suggestions/',注意後綴斜線的判斷,而不是'/keywords_suggestions'serviceUrl:'/keywords_suggestions',

+0

是的,問題從這裏開始'q = request.POST.get 'q')'它實際上並沒有獲得查詢值。爲什麼這樣?我已經完成了文檔中顯示的jQuery代碼。 – rnk

+0

請檢查更新後的問題 – rnk