0

我尝试通过 ajax 将日期时间( 2013-03-12 09:43:09 )字符串从表单发送到数据库。我使用了以下 JS

$.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 指向我的 controller.php 中的方法 saveSlot

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() 的所有组合,但没有给我正确的字符串 : back 以将其保存在数据库中。我能做什么?提前致谢。

4

1 回答 1

1

尝试这个

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

php端的解码。

通常,当您调用 ajax 时,无需提及内容类型。

您可以像这样传递数据,而不是将数据作为对象传递

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

在控制器中,您可以通过JRequest::getVar('end');

希望能帮助到你

于 2013-03-12T09:10:11.887 回答