2017-07-07 118 views
0

我使用ajax發送請求到一個php頁面,該頁面設置一個cookie並使用echo函數將消息發送回瀏覽器。但問題是,PHP成功設置cookie,但我沒有收到消息回聲。 我已經在控制檯上記錄了XMLHTTPRequest對象來確認。Ajax和PHP - 意外行爲

這裏是PHP代碼:

<?php header("Access-Control-Allow-Origin: *"); 
    session_start(); 
    // echo "true"; - If I put the echo here , I get the response. 
    if(isset($_POST['init'])){ 
     $x00 = universe::decode($_POST['init']);// Just a static function call of object Universe. 
     $_SESSION['id'] = $x00['id']; 
     echo "true"; // This echo does not appear in the response. 
    } 
    ?> 

這個responseText然而,這不是不確定的,這是一個空字符串。看看圖片。 Chrome Dev Tools.

+0

用'echo json_encode('true)替換'echo「true」;'' –

+1

沒有足夠的信息。我相信你期待JSON格式的響應。但是,我們仍然不知道您打印的是什麼。 – tilz0R

+0

你的if語句沒有執行... init參數不會與http請求一起發送ajax代碼 –

回答

0

發現問題,感謝您的幫助,夥計們。

我在做的事情是將json數據字符串化並將其作爲普通的post請求發送並期望它可以正常工作,但它沒有出於某種原因。

我寫了一個函數,向服務器發送一個post請求。

ajax.send(x); //Send is a function of the object ajax , x is the payload. 

param = {"id": "qbcd"} //json data 
param=JSON.stringify(ajax.param); // converted to string. 
ajax.send("init="+param); // This will send a post request to the server. 

我認爲這將是初始化字符串帖子發送請求,然後我可以用$ _ POST訪問字符串[「初始化」],並在其上使用json_decode。但由於某種原因,有效載荷僅包含stringyfied json(使用Chrome Dev Tools進行檢查),所以現在我們必須使用$ _POST [0]來訪問它,即訪問post數組的第一個元素,然後解析它。 Post現在不是一個關聯數組(idk爲什麼)。

感謝評論:) 愛情stackoverflow。