jquery id匹配,但根本没有工作

时间:2016-01-13 00:37:23

标签: javascript jquery python django

我有python / django app,需要搜索引擎和搜索引擎我使用jquery的力量。我对Jquery(实际上是完整的Javascript)还是一个新手,但我认为这似乎是正确的,我不确定为什么这不会起作用。

所以我有这段代码:

 <li class="nav-header">search for community</li>
      {% csrf_token %}
      <input type="text" id="search" name="search" />

      <ul id="search-results">

      </ul> 

我有输入ID搜索。和另一个id搜索结果。 然后我有这个javascript文件。

$(function(){

    $('#search').keyup(function() {

        $.ajax({
            type: "POST",
            url: "/search/",
            data: { 
                'search_text' : $('#search').val(),
                'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
            },
            success: searchSuccess,
            dataType: 'html'
        });

    });

});();

function searchSuccess(data, textStatus, jqXHR)
{
    $('#search-results').html(data);
}

我在这里匹配ID搜索。使用keyup功能。是因为功能错了吗?它不太可能,因为整个工作正常。整个事情,我的意思是搜索的功能在这里工作http://127.0.0.1:8000/search/,其中包含search.html

{% extends 'base.html' %}

{% block content %}
    <h2>Search</h2>

    <form method="get" action=".">
        <table>
            {{ form.as_table }}
            <tr>
                <td>&nbsp;</td>
                <td>
                    <input type="submit" value="Search">
                </td>
            </tr>
        </table>

        {% if query %}
            <h3>Results</h3>

            {% for result in page.object_list %}
                <p>
                    <a href="{{ result.object.get_absolute_url }}">{{ result.object.name }}</a>
                </p>
            {% empty %}
                <p>No results found.</p>
            {% endfor %}

            {% if page.has_previous or page.has_next %}
                <div>
                    {% if page.has_previous %}<a href="?q={{ query }}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
                    |
                    {% if page.has_next %}<a href="?q={{ query }}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %}
                </div>
            {% endif %}
        {% else %}
            {# Show some example queries to run, maybe query syntax, something else? #}
        {% endif %}
    </form>

{%endblock%}

我尝试使用search.html中有效的方法在index.html的搜索栏中使用Jquery keyup函数。 你能告诉我为什么我不能使用匹配id的jquery函数吗?

详细信息:这是我的代码的工作方式 在urls.py里面 我有url(r'^search/$',include('haystack.urls')), 和其他干草堆设置。 然后在views.py

def search_titles(request):
    categories = SearchQuerySet().autocomplete(content_auto=request.POST.get('search_text', ''))            

    return render_to_response('ajax_search.html', {'categories' : categories
        })

for ajax_search.html

{% if categories.count > 0 %}

{% for category in categories %}
    <li><a href="/category/{{post.category}}">{{ category.title }}</a></li>
{% endfor %}

{% else %}

<li>None to show!</li>

{% endif %}

问题出现在ajax我几乎可以肯定

3 个答案:

答案 0 :(得分:1)

如果你只是练习AJAX,你的方法还可以,但是jQuery有a neat method来做这个..

$(function(){
    $('#search').keyup(function() {
            $('#search-results').load("/search/", { 
                'search_text' : $('#search').val(),
                'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
            });
    });
});

答案 1 :(得分:0)

您是否已检入开发人员工具(Chrome)?如果您转到网络选项卡,然后单击XHR,您将获得当前页面的所有ajax请求。

现在,当您找到您的请求时,请单击它并转到&#34;响应&#34;。如果使用HTTP代码20x或304,您将获得正确的响应。如果没有,服务器不知道如何处理您的请求(404)或发生服务器错误(500)。

如果您正在获得正确的响应,请尝试在该回调中添加console.log。您应该看到脚本返回的内容。

Ajax永远不会受到责备,ajax只是隐藏客户端的方法&gt;服务器通信。它是客户端脚本如何处理事物或服务器端脚本如何处理事物。

答案 2 :(得分:0)

我看到这还没有得到解决。

我通常这样做的方法是在加载JS文件之前设置全局站点根目录,或者generating an url for your search url。然后在您的javascript文件中,只使用您之前设置的全局变量。我不知道django所以下面的代码可能有错误。

<script type='text/javascript'>var ROOT= {{ build_absolute_uri('/')|escapejs }};</script>
<script src='{% url search_script %}'></script>