Ajax-запрос с использованием rxjs проблемы с амперсандом - PullRequest
0 голосов
/ 21 мая 2018

Я использую rxjs в своем приложении.

В package.json моя зависимость от rxjs "rxjs": "^5.2.0"

Из этого я использую модуль ajax:

import { ajax } from 'rxjs/observable/dom/ajax'

Я не могу найти документацию для функции ajax.

Мой код:

let categories = action.payload.subcategories.map(cat => cat.id)
let shop = JSON.stringify(action.payload.shop)
action.payload.categories = JSON.stringify(categories)
action.payload.shop = shop
return ajax
  .post('http://192.xxx.xxxx:4000/products', action.payload, {
    'Content-': 'application/json'
  })

У меня возникает проблема, когда, если shop объект имеет амперсанд в одном из своих полей, который разрывает отправляемый объект json.stringified.

Как разрешить амперсанды в текстовых полях объектов json.stringified без разрыва поля?

Нужно ли URL кодировать его?Это просто будет означать немного больше работы на стороне сервера для декодирования, поэтому я смотрю на свои варианты.

Этот SO-ответ кажется простым способом сделать это, хотя я не использую jquery и не знаю, как установить тип запроса для объекта данных в функции ajax.postиспользуется.

action.payload:

enter image description here

Фактические отправляемые данные формы (вкладка сети в консоли разработчика)

enter image description here

Я заметил, что когда я использовал encodeURIComponent() в javascript, он сильно изменил полезную нагрузку.В настоящее время у меня есть бэкэнд-декодирование json, поэтому я хотел бы избежать изменения полезной нагрузки настолько, насколько это возможно.Задняя часть находится в эликсире.

...