Узел экспресс-отправки строки в виде HTML преобразует одинарные кавычки в двойные кавычки - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь отправить эту строку в виде HTML. Строка сохраняется в var и отправляется с использованием res.send(respuesta);

<div data-nanogallery2='{
        "itemsBaseURL": "http://nanogallery2.nanostudio.org/samples/",
        "thumbnailWidth": "auto",
        "thumbnailBorderVertical": 0,
        "thumbnailBorderHorizontal": 0,
        "colorScheme": {
          "thumbnail": {
            "background": "rgba(0,0,0,0)"
          }
        },
        "thumbnailDisplayTransition": "flipDown",
        "thumbnailDisplayTransitionDuration": 750,
        "thumbnailDisplayInterval": 250,
        "thumbnailLabel": {
          "display": false
        },
        "thumbnailHoverEffect2": "toolsAppear|scale120",
        "galleryDisplayMode": "pagination",
        "galleryPaginationMode": "numbers",
        "thumbnailAlignment": "center"
      }'>
      <a href="berlin1.jpg" data-ngthumb="berlin1t.jpg" data-ngdesc="">Berlin 1</a>
      <a href="berlin2.jpg" data-ngthumb="berlin2t.jpg" data-ngdesc="">Berlin 2</a>
      <a href="berlin3.jpg" data-ngthumb="berlin3t.jpg" data-ngdesc="">Berlin 3</a>

    </div>

Проблема в том, что каким-то образом все ' автоматически конвертируются в ", так что это портит мою разметку на стороне клиента.

Есть ли способ сохранить '?

EDIT: Я пытаюсь создать этот раздел HTML динамически. Он используется библиотекой галереи. Это const всегда одинаково, затем я генерирую ссылки с информацией об изображении и добавляю их в строку, затем отправляю строку respuesta клиенту через ajax, чтобы добавить ее.

// GETS
router.get('/bodas', function (req, res) {
    Foto.find({ tipo: 'bodas' }).lean().exec(function (err, data) {
        if (err) throw err;
        var respuesta = generateBodasHTML(data);
        res.send(respuesta);
    });
});
function generateBodasHTML(data) {
    var respuesta = cuerpoGaleria0;
    for (i = 0; i < data.length; i++) {
        respuesta += '<a href="' + data[i].foto_name + '" data-ngthumb="' + data[i].thumb_name + '" data-ngdesc="">' + data[i].name + '</a>';
    }
    respuesta += "</div></div>";
    return respuesta;
}
const cuerpoGaleria0 = `<div class="page_wrapper_home"><div data-nanogallery2='{"itemsBaseURL": "../assets/galeria/", "thumbnailWidth": "auto", "thumbnailBorderVertical": 0, "thumbnailBorderHorizontal": 0, "colorScheme": { "thumbnail": { "background": "rgba(0,0,0,0)" } }, "thumbnailDisplayTransition": "flipDown", "thumbnailDisplayTransitionDuration": 750, "thumbnailDisplayInterval": 250, "thumbnailLabel": { "display": false }, "thumbnailHoverEffect2": "toolsAppear|scale120", "galleryDisplayMode": "pagination", "galleryPaginationMode": "numbers", "thumbnailAlignment": "center"}'>`;

а это ajax call:

function getContentAjax(pagina) {
        $.ajax({
            url: '/' + pagina
        }).done(function (result) {
            $('#contenido').append(result);
            toggleSliders();

            if (pagina === 'inicio') {
                triggerHomeAnimations();
            }
        });
    }

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Обновление: По-прежнему не возникает проблем с Express, как указано в заголовке вопроса.

Возможно, запрос AJAX вызывает проблему, но пост не содержит отладочной информации, сгенерированной об ответе, полученном в браузере.

Если вы запускаете этот тестовый сервер локально в nodejs:

Экспресс-сервер

var app = express();
app.get("/bodas", function( req, res, next) {
    var html = '<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>\n\n';

    var data = [
        {foto_name: "foto_name1", thumb_name: "thumb_name1", name: "name1"},
        {foto_name: "foto_name2", thumb_name: "thumb_name2", name: "name2"},
        {foto_name: "foto_name3", thumb_name: "thumb_name3 ", name: "name3"}
    ];
    var respuesta = generateBodasHTML(data);

    res.send(html + respuesta + '\n\n</body></html>');
});
function generateBodasHTML(data) {
    var respuesta = cuerpoGaleria0;
    for (i = 0; i < data.length; i++) {
        respuesta += '<a href="' + data[i].foto_name + '" data-ngthumb="' + data[i].thumb_name + '" data-ngdesc="">' + data[i].name + '</a></br>';
    }
    respuesta += "</div></div>";
    return respuesta;
}
const cuerpoGaleria0 = `<div class="page_wrapper_home"><div data-nanogallery2='{"itemsBaseURL": "../assets/galeria/", "thumbnailWidth": "auto", "thumbnailBorderVertical": 0, "thumbnailBorderHorizontal": 0, "colorScheme": { "thumbnail": { "background": "rgba(0,0,0,0)" } }, "thumbnailDisplayTransition": "flipDown", "thumbnailDisplayTransitionDuration": 750, "thumbnailDisplayInterval": 250, "thumbnailLabel": { "display": false }, "thumbnailHoverEffect2": "toolsAppear|scale120", "galleryDisplayMode": "pagination", "galleryPaginationMode": "numbers", "thumbnailAlignment": "center"}'>`;

var server = app.listen(80, function () {
  console.log("testexpress listening on local host port 80");
});

и посмотрите на источник страницы, отправленной с помощью URL:

http://localhost/bodas

видно, что одинарные кавычки сохраняются, а атрибут data-nanogallery2 синтаксически действителен.

Пожалуйста, прочитайте «как создать полный и проверяемый пример» в справочном центре на предпочитаемом вами сайте (например, https://es.stackoverflow.com/help/mcve, https://en.stackoverflow.com/help/mcve или https://pt.stackoverflow.com/help/mcve). Включение данных теста увеличивает ваши шансы получить полезные ответы.

0 голосов
/ 05 июля 2018

Вы можете использовать backtick `

`{
    "itemsBaseURL": "http://nanogallery2.nanostudio.org/samples/",
    "thumbnailWidth": "auto",
    "thumbnailBorderVertical": 0,
    "thumbnailBorderHorizontal": 0,
    "colorScheme": {
      "thumbnail": {
        "background": "rgba(0,0,0,0)"
      }
    },
    "thumbnailDisplayTransition": "flipDown",
    "thumbnailDisplayTransitionDuration": 750,
    "thumbnailDisplayInterval": 250,
    "thumbnailLabel": {
      "display": false
    },
    "thumbnailHoverEffect2": "toolsAppear|scale120",
    "galleryDisplayMode": "pagination",
    "galleryPaginationMode": "numbers",
    "thumbnailAlignment": "center"
  }`>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...