【发布时间】:2013-12-17 03:00:18
【问题描述】:
我有一个 Javascript 变量,它是一个数组(我将字符串推入其中),我必须通过 AJAX jQuery.POST() 方法将该列表发送回服务器:
var user_list = new Array();
user_list.push("42");
var data = { user_list: JSON.stringify(user_list)};
$.post('/accounts/ajax/user_verification/', data)
.done( my_cb );
在服务器中,我正在运行 Django 并尝试使用以下视图解码 POST 请求:
@login_required
def user_verification(request):
if not request.POST.has_key('user_list'):
print (__name__ + ', user_verification, raising BadRequest.')
raise Exception("'user_list' not found as a POST parameter.")
value = unicode(request.POST['user_list'])
print (__name__ + ', value, v = ' + value)
user_list = json.loads(request.body)
我得到以下输出和“ json.loads(request.body) ”抛出的后验异常:
accounts.ajax, value, v = ["42"]
ValueError: No JSON object could be decoded
["42"] 不是具有单个元素的有效 JSON 数组定义吗?
【问题讨论】:
-
尝试传递
{"42"}而不是["42"] -
但是我使用的是 JSON.stringify(),它的输出不正确吗?
-
尝试将 JSON 结构中的“键”
user_list更改为其他内容。它可能会导致问题。另外,为了安全起见,您能否将 JSON 更改为var data = { "newKey": JSON.stringify(user_list)}?
标签: javascript jquery django json