【问题标题】:Django REST undefined JSONDjango REST 未定义的 JSON
【发布时间】:2016-09-19 11:15:47
【问题描述】:

我正在尝试使用 Django 的 REST 框架和 AJAX 来完成国家名称自动完成。相关部分在这里:

#---- views.py -------------
@api_view(['POST'])
def get_country(request):
  if request.method == 'POST':
    #JSON to serializer object
    serializer = CountrySerializer(data=request.data)
    if (serializer.is_valid() == False):
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    req_name = serializer.validated_data['country_name']
    matching_countries = Country.objects.filter(country_name__icontains = req_name )[:20]
    country_json = {}
    country_json['country_name'] = []
    for c in matching_countries:
      country_json['country_name'].append(c.country_name)
    return JsonResponse(country_json) 


// ---- client side call
function get_country(query, process) {
          $.ajax({
            url: 'get_country/',
            type: 'POST',
            dataType: 'json',
            data: {
              country_name: query
            },
            success: function (response) {
              s = response.data;
              console.log(typeof(eval(s)));
            }
          });
        }

该请求似乎有效,如果我在 chrome 开发人员工具中检查响应,我会得到如下信息:

{"country_name": ["BHUTAN", "HUNGARY", "LITHUANIA"]}

问题在于响应对象似乎具有未定义的类型。行 console.log(typeof(eval(s)));在控制台中打印 undefined。我尝试了各种解析、字符串化的方法,但它们似乎都不起作用。知道发生了什么吗?我必须保留上述结构,以便稍后将其插入另一个函数。

【问题讨论】:

    标签: jquery json django django-rest-framework


    【解决方案1】:

    根据文档,success 函数具有以下签名:

    Function( Anything data, String textStatus, jqXHR jqXHR )

    例如:

    success: function (data, status, xhr) { console.log(data.country_name[0] === 'BHUTAN'); // Prints true }

    【讨论】:

    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多