2

我们的控制器上有一个动作,它返回一个带有 id 和名称的 json 结果。然后我们拿它做这个..

    var markup = '';
    for(var i = 0; i < data.length; i++) {
        markup += '<option value="' + data[i].id + '">' + data[i].agentName + '</option>';
    }

    $("#agentId").html(markup);

+ data[i].agentName +使我们面临 xss 攻击,因此我试图找出处理这种情况的最佳方法。

到目前为止,我的“最佳”选项似乎是看看我是否可以在服务器端使用 AntiXss 库并在返回之前对 agentName 进行编码。我说“最好”是因为(截至 2012 年 5 月 14 日)AntiXss 库受到了很多仇恨,所以我不喜欢使用它的想法。

还有其他选择吗?

更新

<select id="agentId"></select>

是我如何构建我将要添加到的选择元素..

4

2 回答 2

3

您应该使用 jQuery 构建 DOM 元素并调用text()

$("#agentId").empty().append($.map(data, function(obj) {
    return $('<option />').val(obj.id).text(obj.agentName)[0];
}));
于 2012-05-14T16:14:04.077 回答
0

您是否尝试过敲除.js?

It's got a great built in binder that populates your select elements with json data.

http://knockoutjs.com/documentation/options-binding.html

于 2012-05-14T16:22:15.060 回答