0

日時(2013-03-12 09:43:09)文字列をフォームからajax経由でdbに送信しようとしています。私は次の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()のすべての組み合わせを試しましたが、dbに保存するための: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 に答える