PHP页面突然重定向

时间:2015-03-05 14:28:28

标签: php jquery ajax zend-server

我的PHP页面上有以下代码,它从客户端获取消息并将其存储在服务器上的日志文件中。该函数由jquery 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);
        }
    });
});

我删除了标题(&#34; content-type:application / json&#34;);和数据类型:&#34; json&#34;在AJAX函数中,发现数据被ZEND服务器发送的错误数据搞糊涂了。错误是:

  

&#34;
警告:session_start():无法发送会话缓存   限制器 - 已在 C:\ Program Files中发送的标头   (x86)\ Zend \ Apache2 \ htdocs \ ChatServer \ post.php 在线 2
警告:无法修改标题信息 - 标题   已经在 C:\ Program Files中发送   (x86)\ Zend \ Apache2 \ htdocs \ ChatServer \ post.php 在线    179
[{&#34;消息&#34;:&#34; 1&#34;}]

所以我理解我认为我可能根据ZEND调试器错误搞砸了标头,这会干扰我的JSON数据(在错误结束时附加了)?是什么赋予了?感谢您的时间和耐心。

2 个答案:

答案 0 :(得分:2)

如果由于某种原因无法将ob_start();移到页面顶部,请添加header("content-type:application/json");作为脚本的第一行。

答案 1 :(得分:1)

您无法修改标题,因此请将代码移至页面顶部:

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

Top表示proccessed页面的顶部,而不是函数的顶部。

此致