2013-06-21 5 views
0

Моя проблема в том, что я должен POST объект JSON в следующем формате:JSON ключ не найден

{ "key1": "value1", 
    "key2": 2, 
    "options": { 
       "content": "lorem ipsum" 
      } 
} 

Но я получаю сообщение об ошибке внутреннего сервера: «Параметры» Ключ не найден. Это мой JS код:

$("#button").click(function(){ 
var json_test = { 
     "key1": "value1", 
     "key2": 2, 
     "options": { 
        "content": "lorem ipsum" 
       } 
    } 
    $.ajax 
    ({ 
     type: "POST", 
     url: '/test/url/', 
     dataType: 'json', 
     data:json_test 
    }) 
}); 

А также это содержимое POST из Firebug:

element_type Text 
learning_page 1 
options[content] lorem ipsum 

я явно делаю что-то неправильно, но я просто не могу понять, что это такое. Есть идеи?

+0

может быть "варианты" зарезервирован слово? – Cherniv

+1

Каков ваш серверный код? JS выглядит правильно. – SpenserJ

+0

* Где * вы получаете эту ошибку? –

ответ

2

Я не уверен, но вы можете пропускать stringifying в JSON

$("#button").click(function(){ 
var json_test = { 
     "key1": "value1", 
     "key2": 2, 
     "options": { 
        "content": "lorem ipsum" 
       } 
    } 
    $.ajax 
    ({ 
     type: "POST", 
     url: '/courses/api/elements/', 
     dataType: 'json', 
     data:JSON.stringify(json_test) 
    }) 
}); 

Также попробуйте добавить

contentType: "application/json; charset=utf-8" 

к возможностям Jquery

+0

Если поджигатель набирает корректность почтовых данных, то это не должно быть обязательным. Кажется, что jQuery делает это автоматически при получении объекта. – SpenserJ

+0

Зависит от того, как сервер ожидает данных. –

+0

stringifying не помогло, так как –