• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Łączenie plików js z ajaxem

Object Storage Arubacloud
0 głosów
97 wizyt
pytanie zadane 11 listopada 2020 w JavaScript przez Jacuchna0 Użytkownik (640 p.)

Witam

w moim projekcie mam takie pliki

index.php

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src=”js/script.js” type=”text/javascript” ></script> 

<style>
    <?php include 'css/board.css'; ?>
</style> 

<?php

    include_once 'models/board.php';
    include_once 'services/gameplay-service.php';

    $o= new Board;
    $o->DrawBoard();     

?>

 

board.php

<?php
    final class Board
    {

        private $fields;
        
        function Board(){
            $this->fields = array(
                array('e', 'r', 'e', 'r', 'e', 'r', 'e', 'r'),
                array('r', 'e', 'r', 'e', 'r', 'e', 'r', 'e'),
                array('e', 'r', 'e', 'r', 'e', 'r', 'e', 'r'),
                array('e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'),
                array('e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'),
                array('b', 'e', 'b', 'e', 'b', 'e', 'b', 'e'),
                array('e', 'b', 'e', 'b', 'e', 'b', 'e', 'b'),
                array('b', 'e', 'b', 'e', 'b', 'e', 'b', 'e')
            );

        }

        public function DrawBoard(){        
            echo '<table id="board">';
            $i = 0;

            for($row= 0; $row < 8; $row++)
            {
                echo '<tr>';
 
                for($col= 0; $col < 8; $col++){            

                    if($this->fields[$row][$col] != 'e')
                    {
                        echo '<td id="'.$i.'">' . $this->fields[$row][$col] . '</td>';
                    }   
                    else
                    {
                        echo '<td id="'.$i.'"></td>';
                    }
                    $i++;
                }
                echo '</tr>';
            } 
            echo '</table>'; 
        }  
    }   
    $id = $_POST["id"]; 
    echo '<p id="asda">' .$id. '</p>';
?>

script.js

    $('#board td').on('click', function(){
        var id = $(this).attr('id');
        var fieldValue = $(this).html();
        
        $(this).css("background-color","green");

        $.post('models/board.php', {'id': id}, function(){});
    });
    

 

Chodzi o to że w pliku board.php generuje tabele o id #board, odnosze się do niej w js'ie przez ajaxa, plik skrypt dolaczam w index.php, jednak coś jest nie tak, mógłby ktoś wskazać bląd

1 odpowiedź

0 głosów
odpowiedź 11 listopada 2020 przez Wiciorny Ekspert (269,710 p.)
edycja 11 listopada 2020 przez Wiciorny
Ajax jest asynchroniczny miej to na uwadzę. Co  zwraca Ci ajax? Promisa?
Wywołania ajaxowe nie zwracają Ci danych per se, dopiero trzeba je np obsłużyć w call-back, żeby te dane otrzymać bo nigdy nie mają gwarancji stąd pojawienie się obiektu typu promise
komentarz 11 listopada 2020 przez Jacuchna0 Użytkownik (640 p.)
A czemu jeśli kod js umieszczam w pliku index.php to działa?
komentarz 11 listopada 2020 przez Wiciorny Ekspert (269,710 p.)
edycja 11 listopada 2020 przez Wiciorny

bo to jest jeżyk JEDNO-WĄTKOWY. W sytuacji kiedy dołączasz skrypt do pliku, skrypty są czytane najpierw, stąd to co wykonuje się w skrypcie, odwołuje się do czegoś, czego np jeszcze nie ma w pliku PHP lub nie zostało załadowane. Szczególnie odwołanie się do "elementu "

Patrz na kolejność dołączasz skrypty, one się wykonują wykonać się próbuje metoda na obiekcie który dopiero w twoim głównym pliku później jest ładowany 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src=”js/script.js” type=”text/javascript” ></script> 
 
 
<?php
 
    include_once 'models/board.php';
    include_once 'services/gameplay-service.php';
 
    $o= new Board;
    $o->DrawBoard();     
 
?>

https://pasja-informatyki.pl/programowanie-webowe/metody-dolaczenia-skryptow/

1
komentarz 11 listopada 2020 przez Wiciorny Ekspert (269,710 p.)

Zachowaniem domyślnym przeglądarki (w sytuacji, gdy nie ustawiono ani atrybutu asych, ani defer) jest sparsowanie i wykonanie skryptu natychmiast w linii dołączenia, zanim przeglądarka kontynuować będzie wczytywanie dalszego źródła witryny.

Podobne pytania

0 głosów
1 odpowiedź 145 wizyt
0 głosów
2 odpowiedzi 284 wizyt
pytanie zadane 27 września 2020 w JavaScript przez Marak123 Stary wyjadacz (11,190 p.)
+1 głos
1 odpowiedź 272 wizyt
pytanie zadane 14 sierpnia 2019 w JavaScript przez Bartłomiej Bolesta Obywatel (1,630 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...