我有一个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数组定义吗?
答案 0 :(得分:1)
我对Django一无所知,所以,这是一个总猜:D
import json
...
value = json.load(request.POST['user_list'])
答案 1 :(得分:1)
我可能在这里完全错了,但在我看来,你正试图解码一个错误的东西。如果我没有弄错的话,你要求。身体看起来像这样:
user_list=["42"]
如果您尝试对此进行解码,则会出现问题。那你为什么不解码变量值的值?
user_list = json.loads(value)