【问题标题】:Will jQuery escape my quotes properly?jQuery 会正确转义我的引号吗?
【发布时间】:2013-07-02 02:54:43
【问题描述】:

我正在使用 $.cookie() 以 JSON 格式从 cookie 中提取所有值:

var props = $.cookie('params');

props 返回:

{"distinct_id": "13f97d6600b42e-000e6293c-6b1b2e75-232800-13f97d6600cc82","utm_source": "the_source","utm_term": "myterms","utm_campaign": "campaign","utm_medium": "medium","utm_content": "content"}

我正在使用 jQuery 将其动态插入到表单中,并且我想确保一切都正确地转到 POST,即使其中可能存在各种通常与 HTML 冲突的疯狂字符(完全合格的网址,&"',甚至可能是 ><)

我还需要确保它可以在 IE6、IE7 等中运行。

var input = $('<input type="hidden" name="CustomField1">');
input.appendTo($('form[data-params=track]')).val(props);

它*看起来*正在工作,但我想 100% 确保我做对了,因为这一步没有错误非常重要。

【问题讨论】:

    标签: javascript jquery json post


    【解决方案1】:

    我很确定 val() 不需要任何额外的转义,因为您实际上并没有编辑原始 HTML。 val() 在一个元素上设置 DOM value

    通常通过 DOM/jQuery 设置属性或属性应该没问题。在渲染innerHtml 时,这些将被自动转义。但是如果你提交一个页面,它甚至不需要渲染任何东西——它可以直接将值从 DOM 复制到请求。

    【讨论】:

      【解决方案2】:

      由于您正在设置输入字段的值,它应该可以正常工作,无需转义/处理输入值中的任何字符。

      【讨论】:

        【解决方案3】:

        您可以使用 JavaScript escape() 函数确保字符串得到正确转义,以便在浏览器中显示。

        【讨论】:

        • 这是一个隐藏的输入,我不显示它,只是通过POST请求发送它
        猜你喜欢
        • 2013-07-22
        • 2016-10-27
        • 1970-01-01
        • 2018-01-21
        • 1970-01-01
        • 2023-04-06
        • 2019-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多