2013-03-12 66 views
0

我嘗試發送一個datetime(2013-03-12 09:43:09)字符串從表單通過ajax到數據庫。我用follwoing JSJoomla 2.5 Ajax將數據保存到db字符編碼

$.ajax({ 
    type: "POST", 
    contentType: "application/x-www-form-urlencoded; charset=utf-8", 
    data: { 
    end: $('#endtime').val() 
    }, 
    url: 'index.php?option=com_sprojectfree&view=checkin&task=saveSlot&format=raw', 
    success: function(data) { 
     console.log(data); 
    } 
}); 

URL指向的方法saveSlot我Controller.php這樣

public function saveSlot() 
{ 
    $input = JFactory::getApplication()->input; 
    $data = new stdClass(); 
    $data->end = $input->get('end'); 
    db = JFactory::getDBO(); 
    $result = $db->insertObject('#__spf_chunks', $data, 'id'); 
... 
} 

數據對象是這樣的:

stdClass Object 
(
    [end] => 2013-03-12095730 
) 

和POST源這樣:

end=2013-03-12+09%3A57%3A30 

我在JS中嘗試了所有字符集,urldecode()和encodeURIComponent()的組合,但沒有給我正確的字符串:返回將其保存在數據庫中。我能做什麼?提前致謝。

回答

1

嘗試此

echo urldecode("2013-03-12+09%3A57%3A30"); 

在PHP側的解碼。

通常當你調用ajax時,內容類型也不需要提及。

而是將數據作爲對象,你可以通過這樣的

var data = "end="+$('#endtime').val(); 
data: encodeURIComponent (data) 

在控制器,你可以通過JRequest::getVar('end');

訪問希望它可以幫助

+0

我嘗試過這一點,它不工作。 urldecode($ data-> end)給了我2013-03-12101707錯誤必須在另一個地方。 – 2013-03-12 09:21:03

+0

嘗試將$ data-> end分配給一個變量然後解碼。 Bcoz其工作精細的urldecode(「2013-03-12 + 09%3A57%3A30」);.也可以嘗試,而不是對象發送參數。它可能會工作 – 2013-03-12 09:39:50

+0

使用urldecode(JRequest :: getVar('結束'))工作正常,但它已被棄用。建議使用JInput ::。使用我上面的代碼給我這樣的:2013-03-1220103A433A33。我們的目標是使用輸入過濾器:'$ data-> end = urldecode($ input-> get('end','','string'));'並且它的工作 – 2013-03-12 09:47:57