如何使用PhpStorm和Xdebug调试AJAX(POST)?

时间:2016-07-09 08:13:25

标签: ajax post phpstorm xdebug

我已将PhpStorm配置为调试HTTP GET - 但仅限于我直接加载页面时。

当我想调试AJAX时,我会获取我的JS请求的URL并创建一个PhpStorm配置来调试它。

不是特别优雅,是吗?

当然,我不能为POST请求这样做(或者我可以吗?)。

理想情况下,我想在浏览器(Chrome)中加载我的AngularJs应用程序,并能够在PhpStorm中断点和调试后端。

我搜索了很多,发现了很多,但我无法找到答案: - (

谁可以提供帮助?

[更新]几年后,我使用优秀且免费的Postman来测试GET和POST。

2 个答案:

答案 0 :(得分:3)

如果Xdebug和PHPStorm配置为在正常加载页面时调试HTTP GET,那么只需在Javascript中的AJAX请求的URL中包含GET参数即可。例如:http://example.com/script.php?XDEBUG_SESSION_START=PHPSTORM

在PHPStorm中启用Debug侦听,使用新URL发送AJAX请求,调试器应该捕获它。您正在寻找的POST数据应该像往常一样出现在$ _POST中。

答案 1 :(得分:0)

我正在使用一种黑客方法来调试AJAX请求。我的项目是Laravel。您可以将此代码更改为与您的技术兼容。

基本理念是:

  1. 抓住主页调试端口
  2. 创建会话
  3. 使用此会话连接AJAX网址
  4. 当您开始调试时,该端口将应用于具有+ debug_url的所有ajax网址。

    HomeController @ index method

    // 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>