2016-08-16 46 views
1

我創建了一個登錄功能從淘汰賽將數據發送到PHP

self.login = function() { 
    var credentials = { 
     email: self.email(), 
     pass: self.pass() 
    } 
    var data = ko.toJS(credentials); 
    $.ajax({ 
     url: 'client/scripts/pages/login/login.php', 
     type: 'post', 
     data: {data: data}, 
     contentType: 'application/json', 
     success: function (result) { 
      alert(result); 
     } 
    }); 
} 

提交表單時,這將發送請求給PHP文件。 這裏是login.php中的代碼,

$data = json_decode($_POST['data']); 
return $data['email']; 

當我執行此,其結果是未定義指數:數據

我試圖JSON.strignify,但它無法正常工作。我怎樣才能在php中獲得用戶的電子郵件?

+0

你試過'JSON.strignify'或'JSON.stringify'嗎? – Script47

+0

爲什麼你需要調整對象呢?你能不能通過JSON來回傳? – NDM

+0

JSON.stringify。我嘗試使用沒有JSON.stringify和JSON.decode,但仍然無法正常工作。 – JMA

回答

0

我用下面的代碼:

客戶端(JS):

$.ajax((<any>{ 
    type: "POST", 
    async: async, 
    url: dataServiceBaseUrl + "request.php", // 
    data: { 
     "jsonrpc": "2.0", 
     "method": method, 
     "dbname": dbName, 
     "params": JSON.stringify(params) 
    }, 
    success: function(data) { 
     var obj = JSON.parse(data); 
    }, 
    error: function() { 
    } 
})); 

服務器端(PHP):

function process_request() { 
    $dbname = $_POST["dbname"]; 
    $method = $_POST["method"]; 
    $params = json_decode($_POST["params"], true); 
    $result = call_user_func_array("methods::" . $method, $params); 
    return json_encode(array("jsonrpc" => "2.0", "result" => $result, "error" => null, "usename"=>$usename)); 
} 

當然,

var data = ko.toJS(credentials); 

是獲取可序列化的數據發送。