json - 通过 AJAX 将 JSON 对象从 Django View 返回给客户端

标签 json ajax django

基本上,我试图将原始 SQL 查询结果转换为 JSON 对象,然后通过 AJAX 将其发送到客户端。 这是我的观点(我正在使用 Django 1.8.6)

import MySQLdb
from django.db import connection
import json
from django.http import HttpResponse
from django.core import serializers
def test_view(request):
      cursor = connection.cursor()
      cursor.execute("select id, name from okved")
      data = cursor.fetchall
      json_data = serializers.serialize('json', data)
      return HttpResponse(json_data, content_type="application/json")

各自的URLConf

url(r'^test/$', test_view),

JQuery 函数

var test = function()
{
    $.ajax({
        type:"GET",
        url:"/test",
        dataType : 'json',
        cache: "false",
        data:{},
        success:function(response)
        {
            alert("Test successful");
        }
    });
    return true;
}

我不断得到GET http://127.0.0.1:8000/test/ 500 (INTERNAL SERVER ERROR) 错误,wheareas 我遵循我在这里遇到的先前线程的所有建议。我真的很感激这方面的任何帮助。我在尝试浏览 Stackoverflow 时大吃一惊。

最佳答案

首先,500 error 只是一个错误代码,django 会为您提供函数堆栈中错误发生位置的堆栈跟踪,您应该学会阅读它并找到错误发生的位置。

从您的代码看来,您正在尝试使用序列化器 来序列化原始查询结果。这是行不通的,因为原始结果是元组的元组,每个子元组都是从数据库返回的记录。 Django serializers 只擅长序列化从 ORM 查询的对象。你最好使用 json.dumps() 方法。这是您的 views.py 中的最后几行:

data = cursor.fetchall()
json_data = json.dumps(data)
return HttpResponse(json_data, content_type="application/json")

这是 doc用于 Django 序列化程序。

关于json - 通过 AJAX 将 JSON 对象从 Django View 返回给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33657773/

相关文章:

python - API 响应文本到 JSON

javascript - 使用 Parse javascript SDK 更新对象数组

ajax - 向本地主机nodejs服务器发送简单的ajax请求

python - 在 Django 中批量创建相关模型

javascript - 如何从 php json 编码生成这个 javascript 对象

java - 在 Spring RESTful Web 服务中接受 json 调用以及 XML

python - 如何设置路径以将数据从 CSV 文件加载到 Docker 容器中的 PostgreSQL 数据库中?

python - django IntegerField 和 SmallIntegerFields 映射到 Oracle 上的相同数据库类型

javascript - 如何在 AJAX 请求正在进行时禁用提交按钮并在收到成功的 AJAX 响应后启用它?

c# - 使用ajax将对象发送到mvc Controller