2011-11-17 93 views
1

消失這是我的代碼:反斜槓從文件名

<script> 
document.getElementById(div').innerHTML = '<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\Asdeqw.txt\');">efff</a>'; 
</script> 

openPhpFile功能運行時,我提醒文件名和\字符都不見了,即使它們是翻倍。 addslashes()沒有幫助;它會是什麼?

+2

凌晨必要看看功能openPhpFile和PHP文件來解決問題 – noob

回答

3

你應該這樣做,而不是:

<script type='text/javascript'> 
    (function() { // Closures are your friend 
    // Declare variables 
    var theDiv, theLink; 
    // Create the link and assign attributes 
    theLink = document.createElement('a'); 
    theLink.innerHTML = 'efff'; 
    theLink.href = '#'; 
    theLink.onclick = function() { 
     openPhpFile('asdasD\\Asdeqw.txt'); 
    }; 
    // Get a reference to the container, empty the container and add the link 
    theDiv = document.getElementById('div'); 
    theDiv.innerHTML = ''; 
    theDiv.appendChild(theLink); 
    })(); 
</script> 

請記住,如果你是echo的荷蘭國際集團從PHP雙引號裏面,你會真正需要反斜槓。這是因爲PHP也會使用雙反斜槓序列,並且只會輸出一個。所以,如果你想PHP回聲2反斜槓,你需要把4英寸

+0

哇,這是一個很大的代碼。 :O –

+0

是的,但它是正確的做法。 – DaveRandom

+0

「href」應該是「#」之類的東西;沒有理由成爲「javascript:」僞造的URL。 – Pointy

1

如果你打開JS控制檯,您將看到它被翻在地asdasD\Asdeqw.txt

因此,嘗試添加另一斜槓。

'<a href="javascript:void(0);" onclick="openPhpFile (\'asdasD\\\Asdeqw.txt\');">efff</a>' 
1

你有沒有嘗試過把它們4而不是2或3爲每個反斜槓?

1

只是想知道爲什麼你需要在這裏的反斜槓?不要所有操作系統的支持(甚至更喜歡)正斜槓?也許我一直在Linux世界太久。

我只是使用正斜槓,至少對於你的雙反斜槓(顯然不是用於引號)。我有興趣知道你在做什麼,這意味着一個正斜槓不起作用。

+0

你是完全正確的,但可惜__FILE__使用反斜槓:) –

+0

_ _ FILE _ _ constant –

+0

典型的JS醜陋。 ......這就是我所要說的。 – SpiRail

2

嘗試:

var div = document.getElementById("div"); 

div.innerHTML = '<a>efff</a>'; 

div.firstChild.onclick = function() { 
    openPhpFile('asdasD\\\\Asdeqw.txt'); 
}; 
+0

嗯,那好吧,如果文件名是在一個變種,我應該使用addslashes(addslashes()),所以兩次? –

+0

+1,我喜歡這樣。 a''沒有'href'會不會導致頁面重新加載? – DaveRandom

+0

@DaveRandom我還沒有測試過,至少在Google Chrome中沒有JohnSmith,你需要添加php代碼,這樣我們才能知道需要做什麼。 – Esailija