首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以html格式发送字符串的node express正在将单引号转换为双引号

以html格式发送字符串的node express正在将单引号转换为双引号
EN

Stack Overflow用户
提问于 2018-07-05 05:59:29
回答 2查看 877关注 0票数 0

我正在尝试将此字符串作为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>

问题是,不知何故,所有的'都会自动转换成",这就弄乱了我的客户端标记。

有没有办法维护'

编辑:我正在尝试动态地生成这一部分HTML。它由一个画廊图书馆使用。该const总是相同的,然后我生成带有图片信息的链接,并将它们添加到字符串中,然后通过ajax将字符串respuesta发送到客户端以附加它。

// 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();
            }
        });
    }
EN

回答 2

Stack Overflow用户

发布于 2018-07-05 06:03:44

您可以使用反引号`

`{
    "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"
  }`>
票数 0
EN

Stack Overflow用户

发布于 2018-07-05 09:32:25

更新:正如问题标题中所问的,Express似乎仍然没有问题。

可能是AJAX请求引起了问题,但是post中没有生成关于在浏览器中接收到的响应的调试信息。

如果您在nodejs中本地运行此测试服务器:

Express服务器

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/mcvehttps://en.stackoverflow.com/help/mcvehttps://pt.stackoverflow.com/help/mcve )的帮助中心中的“如何创建完整且可验证的示例”。包括测试数据会增加你获得有用答案的机会。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51181184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档