Проблемы с добавлением в список и отправкой через html-форму и jquery

#jquery #html #css #node.js

#jquery #HTML #css #node.js

Вопрос:

Я работаю над узлом.Приложение JS. На стороне клиента у меня есть следующее

 input(type='hidden', name='imgUrl', id="categorylist", value='[]')
...
var images = $.parseJSON($('#categorylist').val())
images.push(data.result.secure_url)
var jsonImages = JSON.stringify(images)
$('#categorylist').val(jsonImages)
  

Затем я сохраняю в orchestrate db следующим образом…

 exports.addToDb = function(req, res, next){
  console.log(req.body)
  if(req.params.type) db.put(req.params.type, uuid.v4(), req.body, false)
  next();
}
  

Проблема в том, что когда он сохраняется, он выглядит так…

 "imgUrl": "["https://res.cloudinary.com/dbkbp16kc/image/upload/v1403448829/img.png"]"
  

Выглядит как «обычный»…

 "imgUrl": [
  "https://f0.bcbits.com/img/a2976218772_2.jpg"
]
  

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

Комментарии:

1. почему у вас есть значение = ‘[]’ , скобки в строке?

2. Я не знаю, потому что я думал, что мне это нужно таким образом. Разве это не так?

3. удаление их полностью нарушает его * делает его «ввод (тип =’скрытый’, имя =’imgUrl’, идентификатор =»categorylist», значение = [])»

4. Используете ли вы Express? Если это так, добавьте app.use(express.bodyParser()); в конфигурацию вашего приложения.

5. Я думаю, это потому, что $(‘#categorylist’).val(jsonImages), jsonImages хранится в виде строки. Вы пробовали выполнять JSON.parse в req.body.imgUrl?

Ответ №1:

Это происходит потому, что вы stringify используете JSON.

Удалите var jsonImages = JSON.stringify(images) и вместо этого установите images direclty в качестве значения '#categorylist'

 input(type='hidden', name='imgUrl', id="categorylist", value='[]')
...
var images = $.parseJSON($('#categorylist').val())
images.push(data.result.secure_url)
$('#categorylist').val(images)
  

Обновить

@Jackie Это "imgUrl": "["https://res.cloudinary.com/dbkbp16kc/image/upload/v1403448829/img.png"]" потому, что ты stringifying JSON. Если вам нужно jsonImages использовать где-то еще JSON.parse(images) , вам лучше установить его в качестве значения #categorylist

 var jsonImages = JSON.stringify(images)
...
$('#categorylist').val(JSON.parse(jsonImages))
  

Комментарии:

1. Я проверю это, когда вернусь домой, но вы уверены, что это сработает? Я попытался избавиться от JSON.parse, и это, казалось, привело к сбою

2. @Jackie Это "imgUrl": "["https://res.cloudinary.com/dbkbp16kc/image/upload/v1403448829/img.png"]" потому, что ты stringifying JSON. Если вам нужно, чтобы он использовался где-то еще JSON.parse(images) , вам лучше установить его в качестве значения #categorylist