0

こんにちは、私は Ajax を使い始めたばかりで、html のテキストフィールド (id_title) から入力を取得して、データベースから動的に情報を取得しています。ユーザーからのテキストフィールドに入力がある場合は正常に機能するようになりましたが、入力がない場合でも、データベースはデータベースの最初のいくつかのレコードを取得します。「id_title」が空のときに成功関数を呼び出さないようにするにはどうすればよいですか?

編集:

おそらく、Django フレームワークと一緒に Ajax を使用していることを付け加えておく必要があります。入力がない場合、最初の 10 レコードが取得されます。django 関数で「query」から入力を受信して​​いない場合に、「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 に答える