我在我的新项目上调试一个小函数的时间非常糟糕。
基本上我有一个用户通过AJAX调用注册我的服务器上的注销脚本名为“userfFunctions.php”我正在使用AJAX,所以我没有头脑写更多的正则表达式匹配我的mod_rewrites。无论如何,每隔一段时间,似乎我的Post数据就会消失,而且由于PHP在幕后运行,我觉得我无法找到数据流被中断的地方。 BTW此功能在当天19小时工作。
这是javascript函数:
function logOut(){
var data = new Object;
data.log_out = true;
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/User_Validator', //<-- redirects to userFunctions.php
data: data,
success: function(data) {
alert(data); // <-- a response is triggered but with no response data!
}
});
}
php方面:
if(isset($_POST['log_out'])){
echo 'alert this!';
}
这是我非常棒的回答: alt text http://img517.imageshack.us/img517/6520/screenshot20100517at443.png
答案 0 :(得分:9)
<强> FirePHP 强>:
FirePHP可让您登录到您的 使用简单的PHP的Firebug控制台 方法调用。
所有数据都通过响应标头发送 并且不会干涉 页面上的内容。
FirePHP非常适合AJAX 开发干净的JSON和XML 需要回复。
这是我写的简约实现:
function FirePHP($message, $label = null, $type = 'LOG')
{
static $i = 0;
if (headers_sent() === false)
{
$type = (in_array($type, array('LOG', 'INFO', 'WARN', 'ERROR')) === false) ? 'LOG' : $type;
if (($_SERVER['HTTP_HOST'] == 'localhost') && (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false))
{
$message = json_encode(array(array('Type' => $type, 'Label' => $label), $message));
if ($i == 0)
{
header('X-Wf-Protocol-1: http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
header('X-Wf-1-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3');
header('X-Wf-1-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
}
header('X-Wf-1-1-1-' . ++$i . ': ' . strlen($message) . '|' . $message . '|');
}
}
}
我编写它以便它只适用于localhost(出于安全原因),但您可以通过替换以下代码轻松更改它:
if (($_SERVER['HTTP_HOST'] == 'localhost') && (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false))
使用:
if (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false)
答案 1 :(得分:8)
尝试使用Firefox的FireBug插件或Chrome中的开发者工具来查看发送的请求。
答案 2 :(得分:2)
您是否尝试过将dataType
设置为"text"
?
function logOut(){
var data = {
"log_out" : true
};
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/User_Validator',
data: data,
success: function(data) {
alert(data);
},
dataType : 'text'
});
}
另外,我会将你的PHP更改为:
print_r($_POST);
答案 3 :(得分:0)
我注意到了:
//<-- redirects to userFunctions.php
当您执行重定向(标题(“位置:”);)时,您将丢失$ _POST和$ _GET数据。 (如果您指的是网址重写(使用mod_rewrite),您应该会收到数据。)
但这并不能解释19小时的症状。
答案 4 :(得分:0)
您可以尝试检查$ _POST数组本身,如下所示:
var_dump($_POST);
查看数组是否完全填充,然后从那里开始工作。 使用firebug,您还可以确认AJAX帖子是否真正发送数据(检查控制台或网络标签)。