2016-01-20 67 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,您可以在開發人員調試控制檯中檢查返回的字符串值。對於測試,您可以觸發標籤之間的運行功能,而不是觸發事件 –