Игнорирование апострофов в строковом объекте JSON, переданном из контроллера в компонент [duplicate]

Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.

Вот пример того же:

var async = require("async");

// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
    // some asynchronous operation
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;
            _callback();
        }
    });
});

async.parallel(asyncTasks, function(){
    // result is available after performing asynchronous operation
    console.log(result)
    console.log('Done');
});

Я использую объект result для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.

Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.

12
задан Deduplicator 1 February 2015 в 17:29
поделиться

4 ответа

Да, оба кавычки разрешены в значениях атрибутов, но вы должны исключить HTML-код, который вы используете в качестве разделителя значений атрибута, а также другие специальные символы HTML, такие как < и &:

function encodeHTML(s) {
    return s.split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;').split("'").join('&#39;');
}

var html= '<label my_attr="'+encodeHTML(attr_value)+'">Text</label>';

Однако вы, как правило, намного лучше not , пытаясь взломать документ из строк HTML. Вы рискуете ошибками и HTML-инъекцией (приводящей к сквозным ошибкам в области межсайтового скриптинга) каждый раз, когда вы забываете сбежать. Вместо этого используйте методы типа DOM, такие как attr(), text() и ярлык построения:

$('body').append(
    $('<label>', {my_attr: attr_value, text: 'Text'})
);
18
ответ дан bobince 26 August 2018 в 06:02
поделиться

Вы можете использовать одинарные кавычки внутри двойных кавычек или двойные кавычки внутри одинарных кавычек. Если вы хотите использовать одинарные кавычки внутри одинарных кавычек или двойных кавычек в двойных кавычках, вы должны их кодировать HTML.

Допустимая разметка:

<label attr="This 'works'!" />
<label attr='This "works" too' />
<label attr="This does NOT \"work\"" />
<label attr="And this is &quot;OK&quot;, too" />
10
ответ дан CodeTwice 26 August 2018 в 06:02
поделиться

Использовать двойные кавычки как разделитель атрибутов:

var html = "<label my_attr=\"" + attr_value + "\">Text</label>";
3
ответ дан Marcelo Cantos 26 August 2018 в 06:02
поделиться
var attr_value = "It&#39;s not working"
3
ответ дан Marco Mariani 26 August 2018 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: