Простая проблема с Django при использовании Jquery и AJAX - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь отобразить только таблицу для ответа на вызов AJX, но он отображает весь шаблон.Как я могу только визуализировать таблицу при использовании render_to_response?

Шаблон:

<html>
    <head>
        <title> Hash Searcher </title>
        <script type="text/javascript" src="{{STATIC_URL}}jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#searchSubmit').click(function() {
                    q = $('#q').val();
                    $('#results').html('&nbsp;').load('/?mdhash=' + q );

                });
            });
            $(document).ajaxStart(function() {
                $('#spinner').show();
            }).ajaxStop(function() {
                $('#spinner').hide();
            });
        </script>
    </head>
    <body style="text-align: center; ">
        <input id="q" type="text" name="mdhash" value="{{ mdhash }}" style="text-align: center; "size=60 />
        <br>
        <input id="searchSubmit" type="submit" value="Search" />
        <br>
        <div style="display:none" id="spinner"><img src="{{STATIC_URL}}spinner.gif"/></div>
        <br>
        <span id="results">
        {% if plain %}
        <table>
            <tbody>
                <tr>
                    <td><small>#</small></td>
                    <td><small>Hash</small><br></td>
                    <td><small>Clear</small><br></td>
                    <td><small>Type</small><br></td>
                    <td><small>DB</small><br></td>
                </tr>
                {% for hash, clear in plain.items %}
                <tr>
                    <td><small>{{ forloop.counter }}</small></td>
                    <td><small>{{ hash }}</small><br></td>
                    <td><small><strong>{{ clear.0 }}</strong></small><br></td>
                    <td><small>{{ clear.1 }}</small><br></td>
                    <td><small>{{ clear.2 }}</small><br></td>
                </tr>
                {% endfor %}
            </tbody>
        </table>
        {% endif %}
        </span>
    </body>
</html>

Просмотр:

from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template.context import RequestContext
import core.models, time

def search(request):
    req = request.GET.get('mdhash', '')
    plain = {}
    try:
        plain[req] = (core.models.Hash_md5.objects.get(hash=req).plain, 'md5', 'iCrack')
    except:
        pass
    #aif request.is_ajax():
    #    time.sleep(5)
    #    return HttpResponse({plain: 'plain'})
    #else:
    return render_to_response('index.html', locals(), context_instance = RequestContext(request))

1 Ответ

1 голос
/ 15 марта 2012

Если вы выделите часть шаблона <table> (и включите ее в шаблон страницы, используя {% include ... %}), то вы можете просто отобразить этот под-шаблон if request.is_ajax(), и вы сможете заменить только эта часть страницы через JQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...