0

嗨,我刚刚开始使用 Ajax,并且正在从 html 中的文本字段 (id_title) 获取输入以动态地从数据库中检索信息。当用户在文本字段中输入时,它现在工作正常,但是当没有输入时,数据库仍然检索数据库中的前几条记录。当“id_title”为空时,如何防止调用成功函数?

编辑:

也许我应该补充一点,我将 Ajax 与 Django 框架一起使用。当没有输入时,检索前 10 条记录。当 django 函数中没有从“查询”接收到输入时,我不确定如何停止将记录发送到“qna/rec_results.html”。

Django 函数(/qna/question_t_lookup/ 中的引用函数)

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 函数

 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!");
         }
       }
     });
};
4

4 回答 4

1

感谢machaku,我能够解决空字符串问题!非常感谢!

if len(value.strip()) > 0:
            model_results = Question.objects.filter(title__icontains = value)
        else:
            model_results = [] 
于 2012-07-25T03:24:55.313 回答
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!");
         }
       }
     });
};
于 2012-07-24T11:26:40.277 回答
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 调用。

于 2012-07-24T11:26:51.753 回答
0

model_results = Question.objects.all()当查询不可用时,您将返回。当查询为空时,尝试创建空的 model_results。

例子:

if request.GET['query']:
    # return your query results
else:
    model_results = []        
于 2012-07-24T14:38:43.823 回答