Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ JavaScript _ Wywoływanie funkcji javaScript

Napisany przez: frankiejojo 15.02.2020, 09:38:56

Witam,
Usiłuję napisać program, który przeładuje mi stronę i uruchomi na tej nowej stronie funkcję, która z kolei umieści fragment kodu.
W skrócie - jak klient zakończy edycję swojej oferty by mógł wrócić do listy swoich ofert.
Mam 3 pliki
- panel.php
- modyfikowanie.php
-listaOfert.php
W pliku panel.php umieszczona jest następująca funkcja js.

  1. function listaOfert(){
  2. var url = "user/listaOfert.php";
  3. var hr = new XMLHttpRequest();
  4. hr.open("POST", url, true);
  5. hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  6. hr.onreadystatechange = function() {
  7. if(hr.readyState == 4 && hr.status == 200) {
  8. var return_data = hr.responseText;
  9. document.getElementById("miejsce").innerHTML = return_data;
  10. }
  11. }
  12. hr.send(); // Actually execute the request
  13. document.getElementById("miejsce").innerHTML = "processing...";
  14. }

Funkcja ta po jej uruchomieniu w miejsce diva "miejsce" umieszcza zawartość pliku listaOfert.php (i działa bez zarzutów)

Drugi plik to modyfiikowanie - tu mamy następującą funkcję:
  1. function lista(){
  2. var miejsce = location.href;
  3. if(miejsce=="http://www.tradebest.pl/panel.php"){
  4. }else{
  5. location.href="http://www.tradebest.pl/panel.php";
  6. }
  7. listaOfert();
  8. }

Ta funkcja sprawdza gdzie jesteśmy i przenosi nas do strony panel.php po czym uruchamia funkcję listaOfert().

I teraz zagwozdka.
Jak uruchamiam funkcję listaOfert będąc w pliku panel.php to działa bez zarzutów,
Natomiast kiedy uruchomię ją będąc w pliku modyfikowanie.php pojawia mi się komunikat
InvalidStateError: XMLHttpRequest has an invalid context.

i nie bardzo wiem jak to poprawić.


Napisany przez: trueblue 15.02.2020, 10:08:45

Jeśli przekierowałeś użytkownika na inny URL, to w jaki sposób miałaby się wykonać dalsza część kodu JS?

P.S. Ten if/else da się zastąpić po prostu if. I zamiast porównywać cały URL, sprawdź pathname. Zmienisz domenę i będziesz szukał przyczyny niedziałania.

Napisany przez: frankiejojo 15.02.2020, 12:18:13

<div id="miejsce"></div> w którym ma się ukazać listaOfert.php znajduje się w pliku panel.php.
Z tego powodu wpierw chcę klienta przekierować do pliku panel.php a następnie uruchomić funkcję listaOfert, która wyświetli wewnątrz tego diva żądaną zawartość.

Napisany przez: trueblue 15.02.2020, 12:20:04

Dzięki za wyjaśnienie, ale to chyba Ty nie rozumiesz, że kiedy przekierowujesz klienta na inny adres, to dalsza część kodu JS nie wykona się.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)