jQuery自动完成不想发送特定的POST数据

时间:2012-06-04 21:16:04

标签: python django jquery-autocomplete

我正在尝试添加项目(基金)。自动填充成功显示所有资金。它应该检索与该'基金'相对应的fund.id。如果我能再看到这一点,我将不胜感激......

只是要明确:我没有得到具体的错误。如果POST中没有“基金”,我的视图只会重定向。我只是想弄清楚为什么我的自动完成没有发布基金POST值'(fund.id)。

- 谢谢你提前

模板

<script type="text/javascript" src="{{ STATIC_URL }}js/autocomplete/add_fund_autocomplete.js"></script>
...
<form method="POST" action="/profile/edit/">
 {% csrf_token %}
      <input type="hidden" name="fund" id="id_fund" />
      <div class="inline-block">
           <label for="id_omnibox">Fund</label>
           <input id="id_omnibox" name="omnibox" placeholder="Enter a fund name or search for an existing..." type="text" />
      </div>
      <div class="input-prepend inline-block">
           <label for="id_amount">Allocation</label>
           <span>$</span>
           <input id="id_amount" name="amount" type="text" placeholder="Enter amount" />
      </div>
      <button class="add" type="submit" name="add_position">Add</button>
 </form>

add_fund_autocomplete.js

$(document).ready(function() {
    $.get('/autocomplete/funds/', function(data) {
        var completions = new Array();
        var dict = JSON.parse(data, function(key, value) {
            completions.push(key);
            return value;
        });
        $('#id_omnibox').autocomplete({
            source: completions,
            minLength: 2,
            select: function(event, ui) {
                $('#id_fund').val(dict[ui.item.value]);
            }
        });
    });
});

(适用自动完成)查看

@login_required
def funds(request):
    funds = Fund.objects.exclude(name='Placeholder')
    result = {}
    for fund in funds:
        result[fund.name] = str(fund.id)
    return HttpResponse(json.dumps(result))

例如: 添加基金Hoth Ltd,金额为$ 123。 Hoth Ltd的fund.id应为1

发布数据

POST
---------------------------------------------------------
Variable               Value
---------------------------------------------------------
fund                   u'' #empty? :\
csrfmiddlewaretoken    u'436f77eb2023043be2f5242bb0443d80'
omnibox                u'Hoth Ltd'
amount                 u'123'
add_position           u'' #Just a trigger used in my view

1 个答案:

答案 0 :(得分:0)

调用select回调函数时,变量dict未定义。

您可以使用ui.item.value