script jquery non funziona più dopo il passaggio a MVC

the_indios

Nuovo Utente
29 Gen 2020
13
0
1
Salve a tutti :)

ho uno script php di modifica dei dati di un form che fa uso di jquery.
Lo script preleva dei dati da un div e dopo alcune verifiche, effettua una richiesta AJAX e richiama uno script che elimina un contenuto dalla base di dati e restituisce un booleano (dovrebbe).

I due script sono nello stesso percorso del server, ma da quando ho cambiato il sito usando il pattern MVC, non funziona più.

Ho pensato che si tratta sicuramente dell'url, perché qualsiasi var_dump io faccia nello script di destinazione, non restituisce nulla nella clausola success.

Dunque ho provato ad inserire il percorso assoluto del server, così:
url : "/core/view/activities/removeNodeIfExists.php",

In questo modo torna a funzionare, mentre andando di percorso relativo
url : "removeNodeIfExists.php" oppure url : "./removeNodeIfExists.php"
non funziona.

La URL è completamente sganciata dal percorso del server, ed è " http://cicerone.locl/activities/1/edit"

Qualcuno mi spiega l'arcano? jquery è un linguaggio client-side, quindi non dovrebbe vedere come è strutturato il server o vado errato?
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
ma da quando ho cambiato il sito usando il pattern MVC, non funziona più.
??? hai sbagliato l'utilizzo della "C" Controller, e probabilmente anche della "V" Views!!!

Anche js deve utilizzare i percorsi definiti nel router altrimenti non funziona!!
script di destinazione

Non puoi "richiamare" un file .php da url, esci fuori dal pattern, dovresti interrogarlo utilizzando il controller!!!!
--------------------------------------------
Ricapitolando:
  1. Controller Activities
    1. Interroga il model
    2. Recupera i dati dal model
  2. Ritorna una Vista
Nella vista hai il JS? Se hai fatto così sappi che è totalmente errato.
La chiamata in ajax richiama un "FILE.php"???? Sbagliato!

Ajax dovrebbe chiamare un controller, che abiliti degli helper per far il compito da te scelto... Quindi l'URL ajax non può essere un file!!!!

In questo scenario:
JS-> AJAX richiama un controller C che a sua volta attiva l'helper/libreria per effettuare il controllo....
Una possibile soluzione, potrebbe essere questa:

PHP:
public function do_actions($callback){
    $args=[$callback=>sanitize_post($_POST)];
    array_walk($args,function($v,$k){
       if(methods_exsists($this,$k))call_user_funct_array([$this,$k],[$v]);
       else if(function_exists($k))call_user_func($k,$v);
    });
}
JavaScript:
$.ajax({
    method:'post',
    url:'/do_action/removeNodeIfExists ',
    data:this.dati,
    success:function(response){
       //do action   
    },
    error:function(response){
        //do error
    }
})
 

the_indios

Nuovo Utente
29 Gen 2020
13
0
1
Nella vista hai il JS? Se hai fatto così sappi che è totalmente errato.
E come faccio altrimenti? lo script va messo dopo il body, non può andare nell'head. Anche perché preleva i dati di php
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
E come faccio altrimenti? lo script va messo dopo il body, non può andare nell'head. Anche perché preleva i dati di php
Chi ha parlato di header o body.... Ho semplicemente affermato che dal punto di vista della programmazione è totalmente errato, ma nessuno ha detto che non funziona...

Non puoi "richiamare" un file .php da url, esci fuori dal pattern, dovresti interrogarlo utilizzando il controller!!!!
Hai provato a fare questo??????
 

the_indios

Nuovo Utente
29 Gen 2020
13
0
1
Allora fammi capire....

innanzitutto quei files li devo spostare nel controller, giusto? Credo non debbano stare nella cartella view.

Poi, dovrei richiamare il controller definendo le rotte, ok. E a quel punto questi script "removeNodeIfExists.php" e "removeDuplicateIfExists.php" possono diventare dei metodi?

Chi ha parlato di header o body.... Ho semplicemente affermato che dal punto di vista della programmazione è totalmente errato, ma nessuno ha detto che non funziona...
Quindi, stai dicendo che il codice va messo nel tag script però va spostato nella cartella js? Ovvero, in quello script non deve comparire?
In tal caso, come faccio a passargli i valori delle variabili php?
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
In tal caso, come faccio a passargli i valori delle variabili php?
.... ma serio??? passi le variabili php agli script?
Non sarebbe meglio parametrizzare magari utilizzando gli attributi "data-x"?

Al massimo, per ovviare al problema, potresti caricare risorse in base alle richieste, scrivendo nel dom quello che ti serve, ma ti prego le variabili da php a js NO...
É una pratica comune, soprattutto errata... Se puoi parametrizzare è meglio.

Si il concetto è quello che hai espresso sopra... In quel modo sei a cavallo!!!!!!