🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
4 messages
4 total messages Started by RM Wed, 20 May 2020 18:47
jakby nie zadziałała metoda load biblioteki jQuery
#52022
Author: RM
Date: Wed, 20 May 2020 18:47
36 lines
2393 bytes
Mam tabelkę z danymi ofert pracy. Próbuję zrobić coś takiego: 
naciśnięcie przycisku 'Pokaż szczegóły' ma wyświetlać szczegóły oferty 
pracy w wierszu niżej.
Robię to tak:

<tr><th scope="row">19 <input type="button" value="Pokaż szczegóły" 
onclick="if (this.value == 'Pokaż szczegóły') { this.value = 'Schowaj 
szczegóły'; 
$('#offer_details_19').load('http://localhost/~robert/praca/employee/show_offer/19'); 
} else { this.value = 'Pokaż szczegóły'; 
$('#offer_details_19').html(''); } 
$('#offer_row_19').toggle();"></th><td>tt</td><td></td><td>Marketing / 
PR / 
media</td><td>podstawowe</td><td>małopolskie</td><td>Warszawa</td><td>2020-05-19</td></tr>
<tr id="offer_row_19" style="display: none"><td colspan="8" 
id="offer_details_19"></td></tr>

Akcja employee/show_offer wygląda tak (używam CodeIgnitera):

public function show_offer($id = NULL) {
     $this->load->model('offers_model');
     $offer = $this->offers_model->getOffer($id);
     if (!isEmpty($id)) {
         return 'HELLO FROM AJAX'; // $this->common->showOffer($offer, 
$this->offers_model, TRUE);
     }
     return '';
}

Niestety napis 'HELLO FROM AJAX' nie pojawia się w komórce 
id="offer_details_19", jedynie zmienia się napis na buttonie (na: 
'Schowaj szczegóły').
Wygląda to tak, jakby nie zadziałała metoda load biblioteki jQuery.
Sama biblioteka jQuery działa mi prawidłowo. W innym miejscu używam 
metody load do captcha'y i tam mi działa. Tam robię podobnie.
Proszę o pomoc.
Re: jakby nie zadziałała metoda load biblioteki jQuery
#52023
Author: RM
Date: Thu, 21 May 2020 03:08
50 lines
3025 bytes
W dniu 20.05.2020 o 20:47, RM pisze:
> Mam tabelkę z danymi ofert pracy. Próbuję zrobić coś takiego: 
> naciśnięcie przycisku 'Pokaż szczegóły' ma wyświetlać szczegóły oferty 
> pracy w wierszu niżej.
> Robię to tak:
> 
> <tr><th scope="row">19 <input type="button" value="Pokaż szczegóły" 
> onclick="if (this.value == 'Pokaż szczegóły') { this.value = 'Schowaj 
> szczegóły'; 
> $('#offer_details_19').load('http://localhost/~robert/praca/employee/show_offer/19'); 
> } else { this.value = 'Pokaż szczegóły'; 
> $('#offer_details_19').html(''); } 
> $('#offer_row_19').toggle();"></th><td>tt</td><td></td><td>Marketing / 
> PR / 
> media</td><td>podstawowe</td><td>małopolskie</td><td>Warszawa</td><td>2020-05-19</td></tr> 
> 
> <tr id="offer_row_19" style="display: none"><td colspan="8" 
> id="offer_details_19"></td></tr>
> 
> Akcja employee/show_offer wygląda tak (używam CodeIgnitera):
> 
> public function show_offer($id = NULL) {
>      $this->load->model('offers_model');
>      $offer = $this->offers_model->getOffer($id);
>      if (!isEmpty($id)) {
>          return 'HELLO FROM AJAX'; // $this->common->showOffer($offer, 
> $this->offers_model, TRUE);
>      }
>      return '';
> }
> 
> Niestety napis 'HELLO FROM AJAX' nie pojawia się w komórce 
> id="offer_details_19", jedynie zmienia się napis na buttonie (na: 
> 'Schowaj szczegóły').
> Wygląda to tak, jakby nie zadziałała metoda load biblioteki jQuery.
> Sama biblioteka jQuery działa mi prawidłowo. W innym miejscu używam 
> metody load do captcha'y i tam mi działa. Tam robię podobnie.
> Proszę o pomoc.

Dodałem jako drugi parametr metody load następującą funkcję:

function(responseTxt, statusTxt, xhr){
     if(statusTxt == "success")
       alert("External content loaded successfully!");
     if(statusTxt == "error")
       alert("Error: " + xhr.status + ": " + xhr.statusText);
   }

i pojawiło się "External content loaded successfully!".
W takim razie nie rozumiem dlaczego nie widać 'HELLO FROM AJAX'.
Re: jakby nie zadziałała metoda load biblioteki jQuery
#52024
Author: RM
Date: Thu, 21 May 2020 03:30
10 lines
1240 bytes
W dniu 21.05.2020 o 05:08, RM pisze:
> W takim razie nie rozumiem dlaczego nie widać 'HELLO FROM AJAX'.

Dodałem:
         $(document).ready(function () { 
$('#offer_details_19').on("DOMSubtreeModified", function(){ 
alert('changed'); });
});

i alert się nie wyświetla.
Re: jakby nie zadziałała metoda load biblioteki jQuery
#52025
Author: RM
Date: Thu, 21 May 2020 05:19
1 lines
1076 bytes
Znalazłem błąd. Błąd był w funkcji w PHP - powinno być echo a nie return.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads