Как пройти вопросительный знак express маршрутизатор API для обновления sql - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу обновить поле varchar (String), используя Endi Point Api (Express NodeJS), но у меня возникла проблема: я пропустил неверные данные, такие как знак вопроса.

Express End -Point:

router.get("/updateField/:table/:field/:value/:num/:postid/", function(req, res) {

    connection.query(

        'UPDATE '+ req.params.table +' SET ' + req.params.field +' = '+JSON.stringify(req.params.value) +' where language ='+ req.params.num +' and post_id ='+req.params.postid 

Этот код работает нормально:

http://localhost: 3001 / api / updateField / posts / TITLE / When / 1/1

Но это НЕ РАБОТАЕТ:

http://localhost: 3001 / API / updateField / posts / TITLE / Когда? / 1/1

Я отправляю просьба отреагировать так:

fetch(
      "http://localhost:3001/api/updateField/" +
        table +
        "/" +
        field +
        "/" +
        value +
        "/" +
        lenguage +
        "/" +
        post_id
    );

1 Ответ

0 голосов
/ 05 апреля 2020

Используйте javascript функцию encodeURIComponent() для экранирования специальных символов в параметрах URL.

Например, попробуйте это в консоли браузера, и вы получите представление:

console.log(
      "http://localhost:3001/api/updateField/" +
        table +
        "/" +
        field +
        "/" +
        encodeURIComponent(value) +
        "/" +
        lenguage +
        "/" +
        post_id
    );
console.log(encodeURIComponent("When?"));

Вы увидите, что «Когда?» заменяется на «Когда% 3F» в URL. В Node.Js вы получите значение параметра в виде строки «Когда?» .

Чтобы узнать больше о encodeURIComponent(), обратитесь к this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...