У меня есть скудное время, отлаживая одну небольшую функцию на моем новом проекте.
По существу я сделал, чтобы пользователь вышел из системы через вызов Ajax к моему журналу сценарий на моем сервере, названном "userfFunctions.php", я использую Ajax так, чтобы я не страдал от головной боли записи большего количества regex для соответствия моему mod_rewrites. Так или иначе, время от времени, кажется, как будто мои данные Сообщения просто утончаются, умирает и так как 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!';
}
вот мой потрясающий ответ: сопроводительный текст http://img517.imageshack.us/img517/6520/screenshot20100517at443.png
FirePHP :
FirePHP позволяет войти в свой Консоль Firebug с использованием простого PHP вызов метода.
Все данные отправляются через заголовки ответов. и не будет мешать контент на вашей странице.
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)
Попробуйте использовать что-нибудь вроде плагина FireBug для Firefox или инструментов разработчика в Chrome, чтобы просмотреть отправляемый запрос.
Вы пытались установить dataType
на «текст»
?
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);
Я заметил:
//<-- redirects to userFunctions.php
Когда вы выполните перенаправление (header ("Location:");), вы потеряете свои данные $ _POST и $ _GET. (Если вы имеете в виду URL rewrite (с mod_rewrite), вы должны получить данные.)
Но это не объясняет 19-часовой симптом.
Вы можете попробовать проверить сам массив $_POST, сделав что-то вроде этого:
var_dump($_POST);
Посмотрите, заполняется ли массив вообще, а затем работайте дальше. Используя firebug, вы также можете проверить, действительно ли AJAX-пост отправляет данные (проверьте консоль или вкладку net).