PHP Visual Studio 的工具。如何调试 AJAX 请求?
PHP Tools for Visual Studio. How to debug AJAX requests?
我在 PHP 上有一个小项目,我想使用 PHP Visual Studio 工具调试它。它工作正常,调试器工作得很好。但是我有一部分项目作为服务工作,它侦听来自 html 页面的 AJAX 请求并以 JSON 格式发送响应。在这种情况下,调试器根本不起作用。我在我的 php 服务文件中设置了断点,它从不触发,但我在客户端得到了正确的响应。所以,我的问题是 如何使用 PHP 工具调试 AJAX 请求?
我举了一个客户端和服务器代码的例子来说明我的问题。
server.php
<?php
if(isset($_REQUEST['response'])) {
echo json_encode('ok');
}
else {
echo json_encode('cancel');
}
?>
client.html
<!DOCTYPE HTML>
<html>
<head>
<title>AJAX test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$( document ).ready(function() {
$( "#request" ).bind( "click", function() {
var data = { response: "response" };
$.ajax({
url: "server.php",
type: "POST",
async: false,
timeout: 5000,
dataType: "json",
data: data,
success: function(result) {
$("#response").text(result);
},
error: function(error) {
$("#response").html(error.responseText);
}
});
});
});
</script>
</head>
<body>
<p>
<b>Request: </b> <span id="request"><a href="#">Send request</a></span>
</p>
<p>
<b>Response: </b> <span id="response">Here will be your response...</span>
</p>
</body>
</html>
因此,当我在带有 if 语句的 server.php 行中设置断点时,它不会触发,但客户端成功接收到服务器响应。
我在 DEVSENSE forum 上找到了解决方案
在这种情况下,xdebug 只是不知道什么时候应该开始调试。最简单的方法是添加到 php.ini 下一行:
xdebug.remote_autostart = on
一切正常!
我在 PHP 上有一个小项目,我想使用 PHP Visual Studio 工具调试它。它工作正常,调试器工作得很好。但是我有一部分项目作为服务工作,它侦听来自 html 页面的 AJAX 请求并以 JSON 格式发送响应。在这种情况下,调试器根本不起作用。我在我的 php 服务文件中设置了断点,它从不触发,但我在客户端得到了正确的响应。所以,我的问题是 如何使用 PHP 工具调试 AJAX 请求?
我举了一个客户端和服务器代码的例子来说明我的问题。
server.php
<?php
if(isset($_REQUEST['response'])) {
echo json_encode('ok');
}
else {
echo json_encode('cancel');
}
?>
client.html
<!DOCTYPE HTML>
<html>
<head>
<title>AJAX test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$( document ).ready(function() {
$( "#request" ).bind( "click", function() {
var data = { response: "response" };
$.ajax({
url: "server.php",
type: "POST",
async: false,
timeout: 5000,
dataType: "json",
data: data,
success: function(result) {
$("#response").text(result);
},
error: function(error) {
$("#response").html(error.responseText);
}
});
});
});
</script>
</head>
<body>
<p>
<b>Request: </b> <span id="request"><a href="#">Send request</a></span>
</p>
<p>
<b>Response: </b> <span id="response">Here will be your response...</span>
</p>
</body>
</html>
因此,当我在带有 if 语句的 server.php 行中设置断点时,它不会触发,但客户端成功接收到服务器响应。
我在 DEVSENSE forum 上找到了解决方案 在这种情况下,xdebug 只是不知道什么时候应该开始调试。最简单的方法是添加到 php.ini 下一行:
xdebug.remote_autostart = on
一切正常!