Одна проблема заключается в том, что вы пытаетесь создать код JS genarate PHP, а затем ожидаете, что это сработает: это невозможно. PHP запускается на сервере и только «делает что-то», когда браузер запрашивает страницу: PHP генерирует исходный код для браузера. Это все, что он делает .
Когда в браузере есть страница, появляется JS и PHP больше нигде не найти: см. Разница между Javascript и PHP для получения дополнительной информации по этому вопросу, и я настоятельно рекомендую прочесть об этом.
Однако проблема real , которую вы повторное описание (ваша страница, кажется, перезагружается, но умирает в коде PHP), вызвано тем, что вы используете document.write()
, который не делает то, что вы думаете, , и вы не должны использовать его в современный код .
document.write
является одной из самых ранних функций в JS и имеет очень низкий уровень: он не записывает текст на веб-страницу, он записывает байт в document bytestream , чтобы анализатор документов мог одновременно получать данные из bytestream и анализировать их в дереве страниц.
Пока страница еще обрабатывается, это кажется безопасным : document.write
просто вставит байты в открытый поток байтов, и парсер разберет это, и все будет хорошо. Однако, как только дерево страниц завершено и документ bytestream закрывается, все начинается с go очень, очень неправильно:
Любой вызов document.write
попытается записать в открытый поток текста, и если он закрыто, document.write
просто откроет байтовый поток: теперь у вас есть пустой документ байтового потока. А поскольку анализатор документов видит открытый поток сообщений, он начинает строить дерево страниц на основе того, что в нем, и теперь ваша страница исчезла, потому что это то, что вы сказали браузеру.
Это также не тот случай, когда он «кажется, перестает загружаться при функции PHP», что на самом деле происходит, когда вы сообщаете парсеру страниц, что новый код страницы для формирования дерева страниц является последовательностью байтов <?php echo upadtePurchaseToDB();?>
. Итак, парсер смотрит на это, видит <
, и поэтому знает, что после этого будет тег, потому что именно так работает HTML. Затем он видит ?
и выдает «Ошибка: этот HTML недействителен HTML» и останавливается.
Таким образом, суть здесь в том, чтобы прочитать, где и когда работает PHP, против где и когда JS работает, но, возможно, еще важнее: никогда не использует document.write
, потому что он вообще не делает то, что вы думаете .