2009-12-21 118 views
2

我想通過一個php定義的字符串與空格到一個JavaScript函數,以便我可以附加到查詢字符串。但是,該函數僅在沒有空格時才起作用,並且在有空格時甚至不執行 - 通過使用alert()進行測試。傳遞字符串與空格到javascript

有沒有一種方法可以將字符串與空格傳遞到JavaScript函數,以便我最終可以執行escape(),然後追加到我的查詢字符串中? (使用警報()在這個例子中)

PHP文件

<a onClick=showUser('<?php echo $stringwithspaces; ?>')>click here</a> 

js文件

function showUser(str) 
{ 
alert (str); 
} 

,如果我只能做這樣的事情... onClick=showUser(escape('<?php echo $deptname; ?>'))。 ..這會很棒,但那不起作用。任何幫助將非常感激!謝謝!

+0

我不認爲你的PHP文件的完整內容已成爲問題。你可以編輯它讓他們在那裏? – 2009-12-21 12:19:37

+0

您需要在其他任何地方寫出有效的HTML。 – 2009-12-21 14:30:14

回答

7

問題是你沒有引用attribute value。只有當值不包含空格時,纔可以將屬性值的引號保留,否則HTML處理器無法分辨屬性何時結束。即便如此,也不推薦。你應該總是引用HTML屬性。

<a href="showUser('<?php echo addslashes($username) ?>')">user</a> 

應該工作。對addslashes的調用會轉義引號,否則會引起另一個問題(過早結束showUser的屬性或字符串參數)。

+0

謝謝100萬!我無法相信我花了多少時間試圖解決這個錯誤...非常好的教訓。謝謝:) – Rees 2009-12-22 06:35:08

1

是的,你可以你缺少在你的XML屬性字段: 每個屬性必須有一個起始和結束

myField=blabla ...

onClick="showUser(escape('<?php echo $deptname; ?>'))" 
+0

你的意思是*技術*不正確,即使它與這裏的問題有關,因爲HTML屬性不需要引號,只有XHTML和XML屬性。沒有引號,任何沒有空格的值都可以正確解析。 – 2009-12-21 14:38:52

+0

你說得對,但我認爲以好習慣開頭並引用每個屬性會更好:) – Patrick 2009-12-21 15:15:07

-1

嘗試Unicode空格字符'\ u0020'的轉義序列。