2013-12-01 2 views
1

У меня есть переменная Javascript, которая представляет собой массив (я нажимаю на него строки), и я должен отправить этот список обратно на сервер с помощью метода AJAX jQuery.POST():jQuery, AJAX post Javascript массив с JSON

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

попытка прохождения '{ "42"}' вместо '[ "42"]' –

+0

Но я использую JSON.stringify(), не является его выход правильно? – Ricardo

+0

попробуйте изменить «ключ» 'user_list' в вашей структуре JSON на что-то еще. Это может вызвать проблемы. Кроме того, чтобы быть в безопасности, вы можете изменить JSON на 'var data = {" newKey ": JSON.stringify (user_list)}'? –

ответ

1

Я ничего о Джанго не знаю, так это общее предположение: D

import json 
... 
value = json.load(request.POST['user_list']) 
+0

Да, я думаю, что уже слишком поздно ... Я ошибся, передавая аргументы json.load(). – Ricardo

+1

@ Ricardo Я просто понял, что есть еще одна функция, называемая 'load', и что вы уже ее использовали, поэтому я был немного не по теме (еще раз): D Рад, если это помогло в некотором роде. – leaf

1

Я мог бы совершенно неправильно здесь, но мне кажется, что вы пытаетесь расшифровать неправильную вещь. Если я не ошибаюсь, вы запросите.что выглядит так:

user_list=["42"] 

, и если вы попытаетесь декодировать это, у вас возникнет проблема. Итак, почему бы вам не декодировать значение из значения переменной?

user_list = json.loads(value) 
Смежные вопросы