2016-01-20 35 views
0

我在维护一个asp.net rest api,其中SQL数据通过存储过程加载并转换为休息。来自SQL的javascript字符串参数中的非法字符

在网页上,我有一个带有onclick属性的HTML元素,将结果的内容作为参数传入。这适用于几乎所有的事件,但是在chrome控制台中会出现Uncaught SyntaxError:意外的标记ILLEGAL。

我期待该字符字符串中的问题:

我无法找到我所需要的字符在C#中,以取代从字符串中删除这一点。我没有一个好的环境来测试或调试它。

更改SQL中的存储过程不是一个选项。

- 更新 -

我不能给出确切值,因为这是一个有点保密的,但是这是返回的形式REST API当我铬(API调用的结果检查它网络选项卡):

21.12.15 xxx xxx xxx 
↵ 
↵[xxx 13-01-2016] gebeld, gesproken met xxx : hij heeft met xxx besproken dat 

我有一个onclick事件传递字符串在上述(PayComment)作为参数的信息图标。 {{PayComment}}被上面的字符串替换为句柄。

<span onclick="GetInvoicePayComment('{{PayComment}}');">i</span> 

我在javascript函数的第一行设置了一个调试器,但它永远不会到达那一行。

function GetInvoicePayComment(Comment) { 
// 
} 

- 更新2 - 这里的讨论,我认为我需要检查源HTML作为车把替换{{PayComment}}与价值。结果是这样的:

<span class="small fa fa-info-circle" style="text-align: center; font-size: 18px; cursor: pointer;" onclick="GetInvoicePayComment('21.12.15 xxxx 

[xxxx 13-01-2016] gebeld, gesproken met xxx : hij heeft met Rxxx besproken dat deze factuur nog niet moet worden betaald.');"></span> 

我猜这里的换行符是问题,而不是字符。

+1

可能您的过程结果包含新的行文字并导致浏览器出现此问题。如果您可以提供有关问题的更多信息(浏览器中的示例输出和确切问题),我可以帮助您更有效地进行操作。 –

+1

GetInvoicePayComment('{{PayComment}}')是什么类型的数据?抓取?我的意思是你面临的问题取决于你的数据类型。我假设你通过ajax调用获取数据,并且如果你的ajax数据类型是javascript newline literal会导致这个问题。这只是一个unicode角色,你的问题不应与该角色相关。 –

+0

该页面使用把手从其余的api中加载数据。 {{PayComment}}已经加载,我只是不显示在界面中。当用户点击i图标时,我会显示带有{{PayComment}}内容的弹出窗口。 –

回答

0

我已经通过删除解决它换行符中的换行符:

PayComment = item.PayComment.Replace(Environment.NewLine, "") 
0

您可以在STR字符串eleminate符这样的:

str.replace("↵", ""); 

,或者你可以最好用新行字符一样,替换它:

str.replace("↵", "\n"); 
str.replace("↵", "<br>"); 
+0

在javascript或c#中?你可以直接替换那个角色吗?当我看到sql源码时,我看不到该字符。我猜这是sql源代码中的char(13)和char(10),但不知道如何确定。 –

+0

是的,JavaScript确实有string.replace()方法。对于char,您可以在开发人员调试控制台中检查返回的字符串值。对于测试,您可以触发标签之间的运行功能,而不是触发事件 –