我可以让Netbeans 7.3调试PHP脚本以响应JSON请求吗?

时间:2013-09-19 06:41:41

标签: javascript php json netbeans

我正在使用Netbeans 7.3.1,通常我可以使用Xdebug成功调试PHP文件。但是,只有当我的网站项目的结构使得该网站立即从PHP代码生成时才会生效。

现在我有一个主要由HTML文件制作的网站。 HTML静态,不是由PHP生成的。项目中唯一的PHP文件名为phphandler.php。我需要调试那个PHP文件,但它只是为了响应HTML文件中的Javascript / jQuery调用而运行,如下所示:

$.post(siteURL + 'jsonhandler.php', {
                JSON: JSON.stringify(data)
            }, processResult, "json");

在PHP方面,它处理来自$_POST

的JSON请求
$Array = json_decode(stripslashes($_POST['JSON']), true);

当我从JSON中运行调试器时,它会打开Chrome并加载我的网站,从index.html开始,但调试器永远不会打开jsonhandler.php。我可以浏览所有链接并浏览我的网站,它将从jsonhandler.php获取所需的所有JSON数据,但调试器仍然无法解决。

当Javascript通过jsonhandler.php向其发送请求时,我可以通过$_POST进行调试吗?如果是,那该怎么办?


更新:我发现我可以使用jsonhandler.php函数调试Debug File,但这有一个严重的缺点,即我无法创建jsonhandler.php正在接收由网站其余部分构建的JSON数据。我可以手动强制使用一些手工制作的测试JSON数据,但这严重阻碍了我发现整个系统正在做什么的能力。

无论如何,对我而言,这是调试环境配置正确的另一个指标,只是调试器是否以及如何监听正确的事件。

3 个答案:

答案 0 :(得分:0)

我通常做的是提供断点。尝试将断点添加到接收jsonhanler.php文件中的请求(或者您要调试的)的PHP代码中,它们以调试模式运行,浏览您的站点并发送请求,调试器应该打开Netbeans并带您到你离开断点的那一行。从那里你现在可以逐行或跳转到功能。

答案 1 :(得分:0)

您可以尝试通过print_r($ Array)打印php文件中收到的$ Array,然后执行exit(),这可能会停止php文件中的进程,并显示php文件中的结果。这可能允许您查看php文件在$ Array中加载时获得的内容。否则,如果它是ajax请求,您可以通过console.log(响应)在控制台中打印响应。我希望它有所帮助。

答案 2 :(得分:0)

我最近在这里回答了类似的问题:https://stackoverflow.com/a/19636910/212076

基本上,您需要在JSON中添加一个查询参数来触发调试器:

XDEBUG_SESSION_START=netbeans-xdebug

如果直接从HTML表单获取数据,则包含隐藏字段,如下所示:

<input type="hidden" name="XDEBUG_SESSION_START" value="netbeans-xdebug" />