2012-07-24 17 views
0

嗨我剛剛開始使用Ajax,並從html中的textfield(id_title)獲取輸入以動態地從數據庫檢索信息。當用戶輸入文本字段時,它現在工作正常,但是當沒有輸入時,數據庫仍然檢索數據庫中的前幾個記錄。如何避免在'id_title'爲空時調用成功函數?Django中使用的Ajax

編輯:

也許我要補充一點,我使用Ajax和Django框架在一起。當沒有輸入時,前10個記錄被檢索。如果在django函數中沒有從'query'收到任何輸入,我不知道如何停止將記錄發送到'qna/rec_results.html'。

Django的功能

def question_autocomplete_lookup(request): 
results = [] 
model_results = Tags.objects.filter(name__icontains = q) 
if request.method == "GET": 
    if request.GET.has_key(u'query') : 
     value = request.GET[u'query'] 
     model_results = Question.objects.filter(title__icontains = value) 
    else : 
     model_results = Question.objects.all() 
else : 
    model_results = Question.objects.all() 

paginator = Paginator(model_results, 10) 
new_rec_list = paginator.page(1) 

return render_to_response('qna/rec_results.html',{'rec_list' : new_rec_list}) 

AJAX功能(在/ QNA/question_t_lookup /簡稱功能)

function load_qn_search() { 
    $.ajax({ 
     type: "GET", 
     url: '/qna/question_t_lookup/', 
     data: { 
      query: $("#id_title").val()}, 
     success: function(data) {    
       $('#ajax_reload_content').html(data); 
     }, 
     statusCode: { 
     500: function() { 
      alert("Opps! There is a error!"); 
     } 
     } 
    }); 
}; 
+0

使用validate.js簡單驗證您的輸入框。 – 2012-07-24 11:28:13

回答

1

感謝machaku,我能夠拿出這一點,抓住了空字符串的問題!非常感謝!

if len(value.strip()) > 0: 
      model_results = Question.objects.filter(title__icontains = value) 
     else: 
      model_results = [] 
+0

不客氣。 – machaku 2012-07-27 20:17:21

0
function load_qn_search() { 
    $.ajax({ 
     type: "GET", 
     url: '/qna/question_t_lookup/', 
     data: { 
      query: $("#id_title").val()}, 
     success: function(data) { 
       if($("#id_title").val()=='') return false; // stop executing 
       $('#ajax_reload_content').html(data); 
     }, 
     statusCode: { 
     500: function() { 
      alert("Opps! There is a error!"); 
     } 
     } 
    }); 
}; 
0

嘗試以下:

function load_qn_search() { 
    if($("#id_title").val()) 
    { 
    $.ajax({ 
     type: "GET", 
     url: '/qna/question_t_lookup/', 
     data: { 
      query: $("#id_title").val()}, 
     success: function(data) {    
       $('#ajax_reload_content').html(data); 
     }, 
     statusCode: { 
     500: function() { 
      alert("Opps! There is a error!"); 
     } 
     } 
    }); 
    } 
}; 

僅當文本值不爲空時才進行ajax調用。

+0

我可能錯了,但是,did not'.empty()'移除了元素的內容? http://api.jquery.com/empty/ – FallenAngel 2012-07-24 14:55:10

+0

道歉的錯誤。已做出相關更改。請檢查這是否適合你。 – Shant 2012-07-24 15:16:46

+0

您好,感謝您的輸入,但它仍然沒有工作:( – 2012-07-24 17:08:34

0

您正在返回model_results = Question.objects.all()查詢時不速效。嘗試在查詢爲空時創建空的model_results。

例子:

if request.GET['query']: 
    # return your query results 
else: 
    model_results = []   
+0

您的輸入您好感謝 - 但它仍然沒有工作:( – 2012-07-24 17:14:53

+0

你的回答給了我一個想法,它的工作 – 2012-07-25 03:23:03

+0

它是用一個好主意! 'request.GET.get('query','')'而不是'request.GET ['query']'爲了避免'KeyError'如果請求根本沒有查詢參數。 – machaku 2012-07-27 20:16:36