Joomla 2.5 Ajax将数据保存到db字符编码
问题描述:
我尝试发送一个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()的组合,但没有给我正确的字符串:返回将其保存在数据库中。我能做什么?提前致谢。
答
尝试此
echo urldecode("2013-03-12+09%3A57%3A30");
在PHP侧的解码。
通常当你调用ajax时,内容类型也不需要提及。
而是将数据作为对象,你可以通过这样的
var data = "end="+$('#endtime').val();
data: encodeURIComponent (data)
在控制器,你可以通过JRequest::getVar('end');
访问希望它可以帮助
我尝试过这一点,它不工作。 urldecode($ data-> end)给了我2013-03-12101707错误必须在另一个地方。 – 2013-03-12 09:21:03
尝试将$ data-> end分配给一个变量然后解码。 Bcoz其工作精细的urldecode(“2013-03-12 + 09%3A57%3A30”);.也可以尝试,而不是对象发送参数。它可能会工作 – 2013-03-12 09:39:50
使用urldecode(JRequest :: getVar('结束'))工作正常,但它已被弃用。建议使用JInput ::。使用我上面的代码给我这样的:2013-03-1220103A433A33。我们的目标是使用输入过滤器:'$ data-> end = urldecode($ input-> get('end','','string'));'并且它的工作 – 2013-03-12 09:47:57