Przesyłanie tablicy z PHP do JS

Odpowiedz Nowy wątek
2015-01-17 15:03
0

Witam wszystkich,
mam taki problem, gdyż potrzebuję przesłać dane z tablicy wypełnionej wartościami z MySQL do JS.
Od strony php wszystko działa poprawnie.

Znalazłam taką metodę, która wydała mi się w miarę logiczna,
var ar = <?php echo json_encode($aArray) ?>;
Jednak występuje problem gdyż JS się buntuje, i bardzo mu się nie podobają "<"
Uncaught SyntaxError: Unexpected token <

edytowany 1x, ostatnio: Krakak, 2015-01-17 15:04

Pozostało 580 znaków

2015-01-17 15:18
0

pokaż jaka jest przykładowa zawartość $aArray?


Pozostało 580 znaków

2015-01-17 15:26
0

Wypełniam tak

$aArray = array();
$sSQL = sprintf("SELECT * FROM questions");
$rResult = mysql_query($sSQL);
while ($aRow = mysql_fetch_array($rResult))
{
    $aArray[] = $aRow;
}

Tablica wielowymiarowa:
Array ( [0] => Array ( [0] => 1 [ID] => 1 [1] => Przyroda [category] => Przyroda [2] => tresc pytania 1 [question] => tresc pytania 1 [3] => 1 [answer] => 1 ) [1] => Array ( [0] => 2 [ID] => 2 [1] => Przyroda [category] => Przyroda [2] => tresc pytania 2 [question] => tresc pytania 2 [3] => 0 [answer] => 0 ) [2] => Array ( [0] => 3 [ID] => 3 [1] => Przyroda [category] => Przyroda [2] => tresc pytania 3 [question] => tresc pytania 3 [3] => 1 [answer] => 1 ) )

user image

edytowany 1x, ostatnio: Krakak, 2015-01-17 15:30

Pozostało 580 znaków

2015-01-17 15:39
0

I gdzie Ty niby tam masz < ?

Zajrzyj w źródło strony i zobacz co Ci się produkuje.


Pozostało 580 znaków

2015-01-17 15:46
0

user image
chodzi o "<" z tego <?php echo json_encode($aArray) ?>; w tej linijce jest błąd jakkolwiek inaczej bym to zapisała

edytowany 1x, ostatnio: Krakak, 2015-01-17 15:50

Pozostało 580 znaków

2015-01-17 16:44
0

Hm... Pod HTMLem dałam <script.... z całą jego zawartością i działa, jednak jak dam tam plik źródłowy to znajduje zawsze ten sam błąd :/
@dzek69 dzięki za pomoc :)

Pozostało 580 znaków

2015-01-17 20:48
0

<?php zamiast <? ?


Pozostało 580 znaków

2015-01-18 23:21
0

domyslam sie ze caly ten kod siedzi w osobnym pliku o rozszrzeniu .js, co powoduje ze parser nie przetwarza kawalka z php na wartosc, bo on tylko przetwarza w plikach z koncowka .php rozwaizaniem jest dodac parametr do funkcji przyroda i wywolywac ja z dokumentu php, a cialo funkcji zostawic w .js. jak tego bedzie wiecej to mozna stworzyc funkcje initialise, ktora przyjmie paraketry i porozdziela po funkcjach lub zmiennych globalnych.

Pozostało 580 znaków

2015-01-18 23:26
0

Może pytanie głupie - ale który parametr?

Pozostało 580 znaków

2015-01-19 00:22
0

masz tam funkcje przyroda

function przyroda()
                {
                    kategoria = 0;
                    ar = ...
                }

i teraz do funkcji dodaj parametr (nazwa dowolna, u mnie to phpArr)

function przyroda(phpArr){

i przypisz parametr do swojej zmiennej (lub uzywaj bezposrednio nazwy parametru)

function przyroda(phpArr) 
                {
                    kategoria = 0;
                    ar = phpArr // lub uzywaj wszedzie phpArr zamiast ar, lub parametr nazwij ar i nie dodawaj nic.
                }

i wtedy wywolujesz funkcje ''przyroda(<?php echo json_encode($aArray);?>. i teraz wywolanie funkcji MUSI nastapic w bloku <script> (moze byc przy zaladowaniu dokumentu) w pliku z rozszrzeniem .php, wtedy parser przetworzy tablice na js.

Pozostało 580 znaków

2015-01-19 01:21
0

Wrzuciłam wszystko do pliku z htmlem zapisanym jako index.php

Nie jestem pewna czy dobrze zrozumiałam:
var ar = <?php echo json_encode($aArray, JSON_PRETTY_PRINT); ?>;
tak mam to zapisać ?

function nature() {
            categoryName = "Przyroda";
            fillTable(arPHP);
        }

function fillTable(arPHP) {

            ArrayWithQuestionsAll = arPHP;
            alert(arrayWithQuestionsAll[2]);
            for (var i = 0; i < arrayWithQuestionsAll.length; i++) {
                if (arrayWithQuestionsAll[i][placeOfCategory] == categoryName){
                    // arrayWithQuestions[countQuestions] = new Array();
                        for (var j = 0; j <5; j++) {
                            arrayWithQuestions[countQuestions][j] = arrayWithQuestionsAll[i][j];                    
                        }
                    countQuestions++;

                }
            }

            removeButtons();
        }

Tym razem przestał krzyczeć błędami o php a zaczął, że nature() nie jest funkcją

<p>
        <center>
            <span class="button__nature" id="nature" onclick="nature()">
                Przyroda
            </span>
        </center>
        </p>

user image

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0