2016-07-09 49 views
5

Ho configurato PhpStorm per eseguire il debug di HTTP GET, ma solo quando carico una pagina direttamente.Come eseguire il debug di AJAX (POST) con PhpStorm e Xdebug?

Quando voglio eseguire il debug di AJAX, prendo l'URL richiesto dal mio JS e creo una configurazione di PhpStorm per eseguirne il debug.

Non particolarmente elegante, vero?

E, naturalmente, non posso farlo per le richieste POST (o posso?).

Idealmente, vorrei caricare la mia app AngularJs nel browser (Chrome) ed essere in grado di eseguire il breakpoint e il debug del back-end in PhpStorm.

Ho cercato su google un sacco, e trovarono tanto che è venuto vicino, ma non riesco a trovare la risposta :-(

Chi può aiutare?

+3

Non vedo alcun errore - attiva l'icona "maniglia del telefono" in PhpStorm in modo che stia ascoltando le richieste di debug in entrata; usando l'estensione per il browser xdebug (o qualsiasi altro modo supportato, per esempio manualmente) imposta il cookie xdebug ... e la prossima richiesta elaborata da PHP dovrebbe essere catturata da xdebug. Questo, ovviamente, richiede l'installazione corretta di xdebug - finchè è possibile eseguire il debug di pagine PHP ordinarie in questo modo dovrebbe funzionare bene. Potrebbe anche essere necessario aumentare il numero di comandi di debug simultanei nelle impostazioni di PhpStorm: ciò consentirà di eseguire il debug di alcune richieste parallele (se ce ne sarà bisogno) o di richieste secondarie. – LazyOne

+3

Puoi anche impostare 'xdebug.remote_autostart = 1' nel tuo php.ini in modo che xdebug avvii la sessione di debug per * ogni singola richiesta *. – LazyOne

risposta

0

Sto usando tipo di metodo di incisione per eseguire il debug richieste AJAX ... il mio progetto è laravel è possibile modificare questo codice come compatibile con la tecnologia

idea di base è:

  1. Grab home page porta di debug
  2. Creare una sessione
  3. Utilizzando questa sessione concatenare i URL AJAX

Quando si avvia il debug, verrà applicata la porta per tutti gli URL ajax che hanno + debug_url.

metodo HomeController indice @

// Development purpose only 
if ($request->has('XDEBUG_SESSION_START')) $request->session()->put('debug_port' , $request->get('XDEBUG_SESSION_START')); 

master.blade.php

<script> 
    var debug_url='?XDEBUG_SESSION_START={{session('debug_port')}}'; 
</script> 

submit.blade.php

<script> 
    $.ajax(url + debug_url, { 
    method:'post', 
    data:{} 
    }); 
</script> 
1

Se Xdebug e PHPStorm sono configurati per eseguire il debug di HTTP GET quando si carica una pagina normalmente, includere semplicemente il parametro GET nell'URL della richiesta AJAX nel proprio Javascript. Ad esempio: http://example.com/script.php?XDEBUG_SESSION_START=PHPSTORM

Attivare Debug in ascolto in PHPStorm, inviare la richiesta AJAX con il nuovo URL e il debugger dovrebbe prenderlo. I dati POST che stai cercando dovrebbero apparire come al solito in $ _POST.

Problemi correlati