Проблема
Я настроил запрос HTTP-выборки со стороны клиента с некоторыми JSON данными (dataURL из холста), и я хочу иметь возможность доступа к нему со стороны сервера и затем визуализируйте новую страницу, которая отображает этот dataURL. Это только приложение Express (без клиентских платформ).
Однако я получаю сообщение об ошибке. Мне может показаться, что с данными JSON или способом их обработки что-то не так, но посмотрите на код.
В Safari это Unhandled Promise Rejection: SyntaxError: The string did not match the expected pattern.
В Chrome, это Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
В Firefox это SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Код
Клиентская сторона
У меня есть HTML холст, который Я преобразовал в dataURL и сохранил в JSON объект. Этот объект отправляется в sendData.
Если я избавлюсь от строки response.json()
, я не получу ошибку. Но я хочу отобразить новую страницу с dataURL, отображаемым в теге абзаца.
function sendData(input) {
fetch('/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(input)
})
.then((response) => {
response.json()
})
}
//Saves dataURL as string
function saveData(input){
var dataURL = input.toDataURL()
data = { imageData: dataURL}
sendData(data)
}
На стороне сервера
Если я избавлюсь от строки res.render('images')
, я не получу ошибка, но, опять же, я не могу отобразить новую страницу. Кроме того, это может быть другой проблемой, но Express уже не отображает новую страницу. Регистрация req.body.imageData
работает.
exports.submit_image = function (req, res, next) {
console.log(req.body.imageData)
res.render('images')
}
Маршруты
И на всякий случай это поможет, вот индекс. js в каталоге маршрутов
router.get('/', index.get_index)
router.post('/', index.submit_image)
Как я могу решить эту проблему?