2013-10-24 52 views
1

我無法通過在Django(後端)中使用term來捕獲Ajax請求。我不確定term是否是正確的參數。有人可以建議我去哪裏錯了。無法使用Django中的'term'捕獲jQuery/Ajax請求(後端)

這裏是views.py我的Django代碼,我使用term

def get_names(request): 
    q = request.GET.get('term', '') 
    names = Names.objects.filter(names__startswith=q)[:10] 
    results = [] 
    if names.count > 0: 
     for name in names: 
      name_json = {} 
      name_json['id'] = name.id 
      name_json['label'] = name.name 
      name_json['value'] = name.name 
      results.append(name_json) 
      data = json.dumps(results) 
    else: 
      data = 'fail' 

    mimetype = 'application/json' 
    return HttpResponse(data, mimetype) 

這裏是我的jQuery移動代碼

$(document).on("pageinit", "#myPage", function() { 
    $("#autocomplete").on("listviewbeforefilter", function (e, data) { 
     var $ul = $(this), 
      $input = $(data.input), 
      value = $input.val(), 
      html = ""; 
     $ul.html(""); 
     if (value && value.length > 2) { 
      $ul.html("<li><div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div></li>"); 
      $ul.listview("refresh"); 
      $.ajax({ 
       url: "/get_names/", 
       dataType: "json", 
       crossDomain: true, 
       data: { 
        q: $input.val() 
       } 
      }) 
      .then(function (response) { 
       $.each(response, function (i, val) { 
        html += "<li>" + val + "</li>"; 
       }); 
       $ul.html(html); 
       $ul.listview("refresh"); 
       $ul.trigger("updatelayout"); 
      }); 
     } 
    }); 
}); 

這裏是我的html代碼

<div data-role="page" id="myPage"> 

    <div data-role="content"> 

    <ul id="autocomplete" data-role="listview" data-inset="true" data-filter="true" data-filter-placeholder="Search House Id..." data-filter-theme="d"></ul> 
    </div><!-- /content --> 
</div> 

回答

1

你將數據作爲「q」發送到您的js中,然後嘗試通過閱讀「術語」來訪問它。

你應該改變這樣的:

data: { 
    q: $input.val() 
} 

到:

data: { 
    term: $input.val() 
} 

我不知道,如果這是唯一的問題,但它的啓動肯定的好地方!

+0

謝謝,我認爲它的工作,需要解決我的後端代碼中的錯誤。 – kurrodu