2017-04-25 113 views
0

我正面臨着一些轉義斜線的問題,下面是我嘗試過的代碼片段。問題是如何將帶有斜線斜線的變量分配給另一個變量。NodeJS轉義斜槓

var s = 'domain\\username'; 
var options = { 
    user : '' 
}; 
options.user = s; 

console.log(s); // Output : domain\username - CORRECT 
console.log(options); // Output : { user: 'domain\\username' } - WRONG 

當我打印options對象兩個斜線來了麼?

我感覺我真的/嚴重錯誤在這裏做一些事情,這可能是基礎。

更新:

當我使用這個對象options值傳遞,因爲它是(有雙斜線),和我用這與我的SOAP服務,並獲得401錯誤是由於無效的用戶屬性值。

但是,當我嘗試使用相同的用戶值的PHP代碼相同的給予適當的響應,在PHP中,我們也用兩個斜槓來轉義該值。

+0

最有可能的控制檯逃避字符串,因爲..它比替代方案更好。 –

+0

@JanDvorak謝謝,但我真的很抱歉沒有完全明白你的意思。 – Dipak

+0

你確定你的代碼是正確的嗎?運行,給我一個錯誤,因爲選項中不存在'wsdl_headers'。 – user3432422

回答

2

輸出正確。

當你設置變量,轉義反斜槓被解釋成一個單一的代碼點。

但是,options是一個記錄時顯示爲JSON blob的對象。此時反斜槓將被重新轉義,因爲這是反斜槓在JSON輸出中作爲字符串值有效顯示的唯一方式。

如果您將console.log(options)的JSON輸出重新讀入javascript(使用JSON.parse()或類似方法),然後輸出用戶密鑰,則只會顯示一個反斜槓。

(以下問題編輯:)

這可能是爲您的數據通過SOAP消費服務被接受,需要將數據帶明確逃脫。分配值時,在這種情況下,您將需要雙逃避它:

var s = 'domain\\\\user' 

要明確確定是否需要做這個或沒有,我建議你把你的工作的PHP應用程序之間的代理SOAP應用程序,並檢查流量。

+0

謝謝,請你檢查更新後的問題。 – Dipak

+0

經過更新以反映提及使用SOAP服務的問題編輯。 – Benjamin

2

當你console.log()一個對象,它首先轉換爲字符串使用util.inspect()util.inspect()格式串的屬性值作爲文字(很像,如果你要JSON.stringify(s))更容易地/準確地顯示字符串(其可包含控制字符比如\n)。這樣做時,它必須轉義字符串中的某些字符,以便它們是有效的Javascript字符串,這就是爲什麼您會看到反斜槓在您的代碼中轉義的原因。

+0

謝謝,但我將如何在API服務中使用值爲'\\'的對象,因爲數據就像傳遞一樣,會引發401錯誤。 – Dipak

+0

您已經正確地轉義了反斜槓。您的API錯誤狀態的原因很可能在其他地方。 – mscdex

+0

但是'API'對象給''錯誤響應'消息'我傳遞了'錯誤響應'消息,因爲我可以看到'用戶屬性'值有兩個斜槓。但是,當我嘗試使用相同用戶值的'PHP代碼'給出正確的響應時,在PHP中我們也用'兩個斜槓'來轉義這個值。 – Dipak