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

How to debug AJAX (POST) with PhpStorm and Xdebug?

我已将 PhpStorm 配置为调试 HTTP GET - 但仅当我直接加载页面时才如此。

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

不是特别优雅,是吗?

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

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

我在谷歌上搜索了很多,找到了很多接近的答案,但我找不到答案:-(

谁能帮忙?


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

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

基本思路是:

  1. 抓取首页调试端口
  2. 创建会话
  3. 使用此会话连接 AJAX url

当您开始调试时,该端口将应用于所有具有 + debug_url.

的 ajax url

HomeController@index 方法

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

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

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