2014-12-06 2 views
0

Я очень смущен своим кодом. Вот ajax:Ajax не получает данные HTML из render_to_response

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     $("#search-filter").click(function (evt) { 
      evt.preventDefault(); 
      q=$('#q').val(); 
      q_fields=$('#q-fields').attr('value'); 
      $.ajax({ 
       type: 'GET', 
       url: $(this).attr("href"), 
       data: {'q': q, 'q_fields': q_fields}, 
       success: function(data) { 
        var returned_html = $(data); 
        alert(returned_html); 
       } 
      }) 
     }); 
    }); 
</script> 

My view возвращает HTML, который я могу распечатать. Это как и ожидалось.

if self.request.is_ajax(): 
    return render_to_response(self.obj_template, {'object_list': res}, context_instance=RequestContext(self.request)) 

Я не могу получить возврат в свой var return_html. Я должен был что-то упустить. Но что? Ответ от firebug - объект типа «HttpResponse» не имеет len().

EDIT:

Вот шаблон: self.obj_template я использую, чтобы построить свой кусок HTML.

{% for object in object_list %} 
    <li>object.name</li> 
{% endfor %} 

И печать возвращение моего зрения, я хотел бы получить:

print render_to_response(self.obj_template, {'object_list': res}, context_instance=RequestContext(self.request)) 


<tr class="clickableRow" href="/contacts/1054/"> 
    <td>ABBA</td> 
    <td>toto</td> 
    <td>[email protected]</td> 
    <td>CAM SA</td> 
</tr> 

<tr class="clickableRow" href="/contacts/1045/"> 
    <td>toto</td> 
    <td>toto</td> 
    <td></td> 
    <td>None</td> 
</tr> 
+0

Каков тип/значение 'res'? – OozeMeister

+0

@OozeMeister это запрос как object.objects.all() –

+0

Когда вы 'print'' render_to_response', что показывает консоль? – OozeMeister

ответ

0

Я дал слишком мало информации по этой теме, и мне очень жаль. Моя ошибка заключалась в использовании CBV для ответа на форматированный HTML без учета того, что CBV отображает всю страницу. Поэтому мне пришлось вызвать функцию вне CBV, чтобы вернуть точный код, как ожидалось.

0

Это ваш js, что было не так, как насчет попробовать это:

var returned_html = data; 
+0

Черт возьми, вы были правы в этой ошибке. Но моя проблема возникла из-за использования базового представления класса, чтобы вернуть кусок HTML, для которого не является CBS. –