Ошибка запуска PHP-кода после Javascript - PullRequest
0 голосов
/ 01 июля 2011

По сути, это то, что я делаю: У меня есть загрузчик файлов flash / ajax, где пользователи могут выбрать x количество фотографий и загрузить их, а затем они вставляются в базу данных MYSQL с помощью внешнего сценария php.

После того, как они будут добавлены в базу данных, я хотел бы отобразить их на странице и позволить пользователям редактировать теги, подписи и т. Д.

Тем не менее, я не могу понять, как «Live Update» страницы для отображения правильных данных

Возьмите это, например: showFields () запускается после завершения загрузки;

function showFields() {

     var jsvar = '<?php echo getIDs(); ?>';

     document.getElementById('picndata').innerHTML += jsvar;    
}

, который будет работать, если у меня есть getID, просто возвращает статическое значение, такое как "test"

но если бы у меня было это, сделайте это:

function getIDs() {

    $SQL = "SELECT * FROM `slides` ORDER BY `sid` DESC";
    $results = mysql_query($SQL);
    $row = mysql_fetch_assoc($results);
    $slide = $row['sid'];

    $SQL = "SELECT * FROM `slides` WHERE `sid` = $slide";

    $results = mysql_query($SQL);
    $str;

    while ($row = mysql_fetch_array($results)) {
        $str .= $row['size'] . "\r\n";
    }

    return $str; 
}

(небрежно я знаю)

, тогда он не будет работать, потому что PHP запускается первым, и поэтому он не находит никаких результатов, потому что изображения еще не были загружены!

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Используйте ajax и отметку времени ваших изображений.
У меня лично есть функция «обновления», которая вызывается по времени через setTimeout ().

При первоначальной загрузке текущих изображений определите самое новое изображениеметка времени.В вашем ajax запросите изображения с отметкой времени> предыдущей «новейшей» отметкой времени.Обновите страницу, если вы получите какие-либо результаты, и сбросьте свой новый «новейший» вариант.
Если у вас есть какой-то возврат из функции загрузки, которую вы также можете использовать для запуска вашего Ajax, это устранит любую задержку в просмотре новогоimages.

Я бы также предложил сохранить эту метку времени в переменных сеанса, чтобы вы не полагались на пользовательский ввод для запроса.

Также обрабатывает параллелизм, когда другие пользователи могут загружать в ту же область.

0 голосов
/ 01 июля 2011

Эта строка:

$str .= $row['size'] . "\r\n";

приведет к тому, что в вашем JavaScript будет неопределенный строковый литерал.

Изменение:

var jsvar = '<?php echo getIDs(); ?>';

К:

var jsvar = '<?php echo str_replace("\r\n", "\\\r\n", trim(getIDs()) ?>';

Это поместит косые черты в соответствующие места, чтобы JavaScript был действительным.В качестве альтернативы, вместо добавления обратной косой черты, вы можете полностью заменить символы новой строки пробелом или запятой или любым другим, что лучше всего подходит для вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...