2009-12-21 74 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'的转义序列。