построить JavaScript из массива в PHP - PullRequest
0 голосов
/ 15 января 2011

Я настроил свой сайт для использования всплывающей системы Gitter.JavaScript выглядит следующим образом:

$(document).ready(function(){
    setTimeout(function() {
        $.gritter.add({
            title: 'Welcome!',
            text: 'This appears to be your first time playing. Blablabla',
            time: '25000'
        }); 
    }, 500);                        
    setTimeout(function() {
        $.gritter.add({
            title: 'Walkthrough',
            text: 'A walkthrough was setup ...',
            time: ''
        }); 
    }, 30000);          
    setTimeout(function() {                         
        $.gritter.add({
            title: 'You got mail',
            text: 'You have received a message from x ',
            time: ''
        }); 
    }, 36000); 

Это пример 3 всплывающих окон.я хочу иметь такие массивы:

    $popup_title[0] = "Welcome!"; 
    $popup_text[0] = "This appears to be ..."); 
    $popup_time[0] = 25000;

        $popup_title[1] = "Walkthrough"; 
        $popup_text[1] = "A basic blabla ..."); 
        $popup_time[1] = "";

и перебрать эти массивы (если они не пустые) и построить javascript на основе массивов

Ответы [ 3 ]

2 голосов
/ 15 января 2011

что-то вроде этого должно сделать работу

<?php
$popups = array();
foreach ( $popup_title as $key => $title )
{
    $popups[$key] = new stdClass();
    $popups[$key]->title = $title;
}
foreach ( $popup_text as $key => $text )
{
    $popups[$key]->text = $text;
}
foreach ( $popup_time as $key => $time )
{
    $popups[$key]->time = $time;
}
?>
<script type="text/javascript">
$(document).ready(function(){
    <?php foreach ( $popups as $popup ): ?>
    setTimeout(function() {
        $.gritter.add(<?php echo json_encode($popup);?>);
    }
    <?php endforeach; ?>
}
</script>
1 голос
/ 15 января 2011

Просто откройте созданный PHP код JavaScript.

0 голосов
/ 15 января 2011

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

$popups = array(
    array( 'title' => 'First Title', 'text' => 'First Text', 'time' => 25000 ),
    array( 'title' => 'Second Title', 'text' => 'Second Text', 'time' => 2000 ),
);
echo "<script>";
foreach($popups as $idx=>$popup) {
    echo "setTimeout(function() { $.gritter.add({"
        ."title: '{$popup['title']}',"
        ."text: '{$popup['text']}',"
        ."time: ''"
    ."}); }, {$popup['time']}";    
}
echo "</script>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...