我正在使用ASP.NET Web窗体应用程序。我的很多信息都存储在服务器端的XML文件中。通过Ajax调用,我检索了一些用于前端的数据。
问题是有时候我必须在XML文件中写一些字符串,其中一部分应该被识别为JS代码。我的意思是例如:
<Render>
<![CDATA[<center><input type='checkbox' value=" + row[2] + " /></center>]]>
</Render>
在这里,我从JavaScript中的一个地方获取这段数据,其中我有数组row
并且我有索引[2]
但是显示了带有此索引的元素的值,调试器向我显示复选框值按字面意思row[2]
(不识别为数组)。
我在JavaScript中处理此问题的方式是:
options.mRender = function (data, type, row) { return options.Render; };
其中options.Render
是实际字符串<center><input type='checkbox' value=" + row[2] + " />
。
我制作了一个简单的JSFiddle示例。我的想法是当我写person[0]
来获取Ivan
而不是person[0]
时,这就是现在的结果。
我知道如果我这样添加eval()
- $('#appnd').append(eval(txt));
但我无法弄清楚如何在我的代码中使用它,因为我传递了整个标记而不仅仅是变量。
答案 0 :(得分:1)
您可以尝试这样的事情:
function parse(text) {
return text.replace(/[a-z]+\[\d+\]/g,function(exp){return eval(exp);});
}
它只是接受输入并用array[index]
替换它的部分看起来像eval
。
这个解决方案不对我来说似乎是一个好主意,我同意应该有一些标准的方法(更好),但我想不出另一种做法它
编辑:如果您可以在将XML代码发送到客户端(例如<center><input type='checkbox' value=" + BEGINJS>row[2]<ENDJS + " />
之前)以某种方式标记XML中的JS代码,则可能会更可靠,那么您的正则表达式就不必疯狂地猜测JS代码看起来会像。