2013-04-27 10 views
5

Sto creando una query per YQL e mi sono imbattuto in un problema stupido. Non sarò incollando l'intera query in quanto non v'è alcuna necessità, solo la parte che sto avendo il problema con:JavaScript non esegue l'escape character?

var query = encodeURI("... and xpath='//div[@class=\\'body bodySign\\']/p' ...")'; 

Come si può notare, ho aggiunto due \ caratteri, è necessità per il query reale. Utilizzo query multiple e ho bisogno di raddoppiare il carattere ' per poterle analizzare correttamente all'interno di YQL.

Ma JavaScript sfugge al carattere \. Non importa quanti \ aggiungo (a "escape" al seguente carattere \) Mi rimane ancora un solo \ nella mia query.

Come mantenere più caratteri \ senza che si sfuggano l'un l'altro?

Grazie

+0

Quindi vuoi finire con '[@class = \\ 'body bodySign \\']'? – Musa

+0

La barra rovesciata scappa solo il seguente carattere, quindi \\ = \, \\\\ = \\, ecc. 'EncodeURI (" \\ 1 \\ 2 \\\\ 3 ")' restituisce '"% 5C1% 5C2% 5C% 5C3 "' – Shomz

+2

Se si desidera una barra rovesciata nella query, è necessario '' \\ '' nella stringa (è necessario sfuggire alla barra rovesciata). Se ne vuoi due, hai bisogno di '' \\\\ ''. – Matt

risposta

1

Va

var query = encodeURI("... and xpath='//div[@class=\\\\'body bodySign\\\\']/p' ...")'; 

Per esempio, ha colpito F12 e guardare l'output di console.log("\\\\").