У кого-нибудь есть способ думать об этом?
Я собираюсь немного поработать над этим:
$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 для написания Javascript, который вызывает функцию Ajax, и что меня поражает, так это "
s и '
s
Итак, я пишу возвращаемую строку в PHP, так что все, что есть в "
Затем я хочу написать некоторый innerHTML, чтобы я мог вставить внутрь \"
Тогда аргументы HTML могут быть в '
Пока все в порядке.
Итак, мой вызов onchange должен закончиться как onchange="function('a', 'b')"
, где мои "
придет?Если я использую "
, это завершит строку PHP.Если я использую \"
, это завершит строку innerHTML.Итак, я получил PHP для интерпретации этого chr(92).chr(34)
Так что это очень грязно, и это начинает болеть у меня в голове.
И теперь он терпит неудачу в этой пустой строке после второй $toReturn
, который я хотел там для удобочитаемости.
Я, должно быть, делаю что-то неправильно с точки зрения стиля или чего-то еще.
Как вы справляетесь с вложенными "
s?