JQuery — PHP-страница резко перенаправляет

У меня есть следующий код на моей странице PHP, который получает сообщение от клиента и сохраняет его в файле журнала на сервере. Эта функция вызывается функцией jjery AJAX (приведенной ниже). AJAX-запрос отправляет данные правильно, а код PHP работает нормально. Однако, когда ответ на AJAX-запрос отправляется обратно, страница внезапно перенаправляется в index.php (моя главная страница):

Код PHP

function store_chat_msg_function()
{
//Check if session is active
if(isset($_SESSION['NAME']))
{
$data = $_POST;

$text = $data["message"];
$filepath = $data["filepath"];

$fp = fopen($filepath, 'a');
fwrite($fp, "<div class='msgln'>(".date("g:i A").") <b>".$_SESSION['NAME']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>");
fclose($fp);

//Push data array to be sent into array
$json = array();
$bus = array(
'message' => "1");
array_push($json, $bus);

//Encode to JSON format
$jsonstring = json_encode($json);

//Specify type of data being sent
header("content-type:application/json");    //<-----(error:line 179)

//Finally send the data
echo $jsonstring;
}
else
{

}
}

И функция AJAX:

//On submit message
$("#submitmsg").click(function(){

var ptarget = $(this).html();

//get some values from elements on the page:
//Set parameters...
var clientmsg = $("#usermsg").val();

//Clear the text box
$("#usermsg").val("");

var data = {
"action": "send_chat_msg",
"message": clientmsg,
"filepath": globalrefreshfile
};
data = $(this).serialize() + "&" + $.param(data);

//Send the data using post and put the results in a div
$.ajax({
url: "post.php",
type: "POST",
data: data,
datatype: "json",
success: function(data) {
if(data[0].message!="1"){
alert("Message was not sent.");
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
alert(errorThrown);
$("#chatbox").html('There was an error updating chat window');
$("#chatbox").fadeIn(1500);
}
});
});

Я удалил заголовок («content-type: application / json»); и тип данных: «json» в функции AJAX и обнаружил, что данные запутаны ошибочными данными, отправленными сервером ZEND, на котором я выполняю отладку. Ошибка:

«
Предупреждение: session_start (): не может отправить кеш сессии
ограничитель — заголовки уже отправлены C: \ Program Files
(X86) \ Zend \ Apache2 \ HTDOCS \ ChatServer \ post.php
онлайн 2
Предупреждение: Невозможно изменить информацию заголовка — заголовки
уже отправлено C: \ Program Files
(X86) \ Zend \ Apache2 \ HTDOCS \ ChatServer \ post.php
онлайн
179
[{ «Сообщение»: «1»}]

Итак, я понимаю, что, по-моему, я испортил заголовки из-за ошибки отладчика ZEND, которая мешает моим данным JSON (добавлено в конце ошибки)? Что дает? Спасибо за ваше время и терпение.

2

Решение

добавлять ob_start(); в первой строке вашего скрипта, если вы не можете переместить header("content-type:application/json"); в начало страницы по какой-то причине.

2

Другие решения

Вы не можете изменять заголовки, поэтому переместите свой код вверх страницы:

header("content-type:application/json");

Верх означает верх обработанной страницы, а не вершину функции.

С уважением

1

По вопросам рекламы [email protected]