0

我在对 NetSuite 中的 api 函数进行 javascript 调用时遇到问题,该函数返回一个带引号的字符串。每次调用都会抛出一个错误。

var selling_point_1 = "<%=getCurrentAttribute('item','custitemsellingpoint1')%>";

在调试器中查看时,计算结果为:

var selling_point_1 = "Product Dimensions: H:14" W:24"";

对此的任何字符串函数(如 .length 或 charAt(0) )也会引发错误。我无法控制函数调用返回的内容,所以我需要知道如何处理嵌入的引号。

任何帮助将不胜感激,约翰

4

2 回答 2

0

虽然不是您可以使用的最可靠的方法:

var selling_point_1 = escape("<%=getCurrentAttribute('item','custitemsellingpoint1')%>");

这实际上是用于 URI 转义,但会去掉讨厌的双引号,而且您可以使用 unescape 来恢复原始格式。正如建议的那样

var selling_point_1 = '<%=getCurrentAttribute(\'item\',\'custitemsellingpoint1\')%>';

也应该适用于您的情况。

于 2012-06-14T16:14:54.670 回答
0

有关处理大致相同问题的人,请参阅此线程。简短的回答是您需要在服务器端代码中(即在块内)运行某种转义函数,<%=...%>以便只有转义值插入到客户端代码中。以下所有解决方案都可以处理无限数量的单引号和双引号。

我的第一个建议是尝试:

var selling_point_1 = decodeURI("<%=Server.URLEncode(getCurrentAttribute('item','custitemsellingpoint1'))%>");

这将生成如下所示的服务器端 JS:

var selling_point_1 = decodeURI("Product Dimensions: H:14%22 W:24%22");

decodeURIJavaScript 函数会将后面转换为引号,并且正确的%22字符串将存储在selling_point_1.

如果失败,您还可以尝试以下操作:

var selling_point_1 = unescape("<%=HttpServerUtility.HtmlEncode(getCurrentAttribute('item','custitemsellingpoint1'))%>");

它的操作类似,但是将您的引号转换为\"序列,这些序列将由 JavaScript 转换回普通引号unescape

于 2012-06-15T04:16:37.280 回答