有人有办法思考这个问题吗?
我正在努力解决这个问题:
$toReturn .= "
function addProd(pExists)
{
document.getElementById('products').innerHTML = \"<tr><td id='prod_n'><input type='text' size='10' maxlength='10' name='proj_n' id='prod_n' onchange=".chr(92).chr(34)."saveData(setSaveParams('ajaxSaveDataController.php', 'PROD', 'n'), this.value)".chr(92).chr(34)." value='";
$toReturn .="'></td>
<td id='prod_spec'> <textarea cols='60' name='prod_spec' id='prod_spec' rows='20' onchange=".chr(92).chr(34)."saveData(setSaveParams('ajaxSaveDataController.php', 'PROD', 'prod_spec'), this.value)".chr(92).chr(34)." value='";
$toReturn .="'></td></tr>\" + document.getElementById('prodsTab').innerHTML;
if (pExists == 0)
{
document.getElementById('prodsTab').innerHTML = \"<tr><th id='proj_spec_h'>Name</td><th id='proj_spec_h'>Spec</td></tr>\" + document.getElementById('prodsTab').innerHTML;";
我已经转录了这些内容,所以不用太担心偏离主题的拼写错误。
这里发生的事情是我正在使用 PHP 编写调用 Ajax 函数的 Javascript,令我震惊的是 "
和 '
s
所以我正在用 PHP 编写一个返回字符串,所以所有内容都在 "
然后我想写一些innerHTML,这样我就可以放入\"
然后 HTML 参数可以位于 '
到目前为止一切都很好。
那么我的 onchange 调用应该以 onchange="function('a', 'b')"
结束,那么,我的 "
在哪里来自?如果我使用 "
将会结束 PHP 字符串。如果我使用 \"
将会结束innerHTML 字符串。所以我最终让 PHP 来解释这个 chr(92).chr(34)
所以这非常困惑,并且开始让我头疼。
现在它在第二个 $toReturn
之后的空白行上失败了,我希望它具有可读性。
我一定是在风格或某些方面做错了什么。
如何处理嵌套的"
?
最佳答案
使用双转义双引号:
\\\"
这样,当打印时,它将变成一个简单的转义双引号(\"
),并且不会出现在innerHTML中。
关于php - 引用引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994777/