2016-11-16 3 views
1

Я пробовал все варианты запроса AJAX Post, о которых я могу думать, и я все еще не получаю правильный запрос в своем приложении Express.Ошибка с JSON JQuery Ajax POST

var json = {} 
var skus = [1,2,3] 
json.data = { 
    "test":"test", 
    "aoeu":"aoeu" 
} 
$.post('/jet/api/putProduct',json) 

Я упростил этот код, и он все еще не проходит должным образом.

Он появляется на сервере Express в req.body следующим образом.

{data[test]: "test", data[aoeu]: "aoeu"} 

Я пробовал json["data"] = ... и ничего. Я пробовал использовать $.ajax() и ничего. Я пробовал разные способы построения объекта/массива, и ничего.

Я использую app.use(bodyParser.json())

Я не знаю, где копать глубже, но эта функциональность кажется довольно простой, поэтому я не уверен, где зависание есть.

Может ли кто-нибудь указать мне правильное направление для отладки? Это экспресс-проблема? Я слишком долго тратил на это.

+0

вы отправляете как json, поэтому 'bodyParser.json()' не будет работать. По умолчанию contentType для jQuery ajax - это 'application/x-www-form-urlencoded' – charlietfl

+0

Спасибо за более глубокое понимание. Я пытался $ .ajax() с contentType, установленным в application/json, как это рекомендовано ниже. Проблема была в 'app.use (bodyParser.urlencoded ({extended: false))) Я переключился на true, и теперь все выглядит нормально. Уф. – jheyer159

+0

Ответ ниже на @TechBreak не правильно анализирует данные для json – charlietfl

ответ

0

Вы можете сделать следующее, чтобы сделать это немного проще,

var json = { 
    "test":"test", 
    "aoeu":"aoeu" 
} 

и отправить АЯКС пост следующим образом,

$.ajax({ 
    url: '/jet/api/putProduct', 
    type: "POST", 
    data: json, 
    contentType: "application/json" 
}); 

Так на сервере Экспресс в req.body вы должны получить как следующим образом.

{ 
    "test":"test", 
    "aoeu":"aoeu" 
} 
+0

не может просто установить contentType, не строгая также данные – charlietfl

Смежные вопросы