django中的动态JQuery视图

我的jquery看起来像这样:

$('#id_start_date_list').change( function get_time() { var value = $(this).attr('value'); alert(value); var request = $.ajax({ url: "/getTime/", type: "GET", data: {start_date : value}, dataType: "json", success: function(data) { //Popluate combo here by unpacking the json } }); }); 

我的view.py看起来像这样:

 def getTime(request): if request.method == "GET": date_val = request.GET.get('start_date') format = '%Y-%m-%d' sd = datetime.datetime.strptime(date_val, format) sql_qw = MeasurementTest.objects.filter(start_date = sd) results = [{'start_time': str(date.start_time), 'id_start_time':date.start_time} for date in sql_qw] print results *****json_serializer = serializers.get_serializer("json")() response_var= json_serializer.serialize(results, ensure_ascii=False, indent=2, use_natural_keys=True)***** return HttpResponse(response_var, mimetype="application/json") 

我的html页面如下所示:

 html>  date Comparison    {% if form.errors %} 

Please correct the error{{ form.errors|pluralize }} below.

{% endif %}
{% csrf_token %}
{{ form.start_date_list }}

正如您所看到的,我从选择框中获取值,并且我正在对数据库执行操作并检索值并将其存储在json对象中。

有两个部分,我完全失明。 首先是json对象,我不确定结果是否存储在response_var对象中。 第二个是,我不知道如何从json对象获取值到新的“start_time_list”列表

详细说明:我在json对象初始化中做了什么错误。 我试图打印respose_var,但它似乎没有打印在控制台上。 我使用正确的语法吗? 并且有人可以告诉我如何在view.py中查看存储在json对象中的值

以类似的方式,我如何在jquery端执行操作,从json对象中提取值以及如何通过示例代码和可能的解决方案将json对象的值分配到列表框中。

要将结果转换为json,请使用simplejson :

 from django.utils import simplejson def getTime(request): if request.method == "GET": date_val = request.GET.get('start_date') format = '%Y-%m-%d' sd = datetime.datetime.strptime(date_val, format) sql_qw = MeasurementTest.objects.filter(start_date = sd) results = [{'start_time': str(date.start_time), 'id_start_time':date.start_time} for date in sql_qw] print results response_var = simplejson.dumps(results) return HttpResponse(response_var, mimetype="application/json") 

要访问javascript中的json对象,请查看您的ajax请求。 在这种情况下,成功回调正在传递参数, data 。 这是包含服务器响应的变量。 因此,要访问结果数组的第一个元素(例如),您可以:

 var request = $.ajax({ url: "/getTime/", type: "GET", data: {start_date : value}, dataType: "json", success: function(data) { //Popluate combo here by unpacking the json data[0]; // This is the first element of the array sent by the server } }); 

最后,为了修改html,jQuery提供了很多方法,比如html或append 。 值得一看文档 。 因此,如果要为select标记构建选项集合,则应使用javascript for循环遍历结果集,jQuery each方法或类似方法,构造选项(这可以通过连接字符串或创建DOM元素来完成,我认为这是最好的解决方案,因为它表现更好)并使用前面提到的方法之一将它们插入到html中。