イベントを追加してからページを更新して別のイベントを追加すると正常に機能しますが、イベントを追加してから、最初にページを更新せずに別のイベントを追加すると、同じタイムスロットに保存されます。
一部の変数はページが更新されるまで値を保持していると思いますが、どの変数がエラーであるかわかりませんでした。
$ .ajax呼び出しを使用して、データベースからデータを送信、取得、および変更しています
これがコードです:
javascript側:
'eventNew':function(calEvent, $event) {
calendar_new_entry(calEvent,$event);
}
});
});
function calendar_new_entry(calEvent,$event)
{
var ds=calEvent.start;
var df=calEvent.end;
var body = $('#calendar_new_entry_form_body').val('');
var title = $('#calendar_new_entry_form_title').val('') ;
$("#calendar_new_entry_form").dialog({
autoOpen: false,
height: 440,
width: 550,
modal: true,
close: function() // onClose
{
$('#calendar_wrapper').weekCalendar('removeUnsavedEvents');
},
buttons:
{
'Save': function()
{
var body = $('#calendar_new_entry_form_body').val();
var title = $('#calendar_new_entry_form_title').val() ;
var data = {body: body,title:title,start:ds.getTime()/1000,end:df.getTime()/1000};
$.ajax({
type: 'POST',
url: baseUrl+'calendar/add',
data: data,
dataType: 'json',
success: function(json)
{
if (json.status == "success")
{
alert('done');
$("#calendar_wrapper").weekCalendar("refresh");
}
}
});
$(this).dialog('close');
}
これはphp側です:
function add()
{
$start = date('c',(int)($this->input->post('start')+3600));
$end = date('c',(int)($this->input->post('end')+3600));
$title = $this->input->post('title');
$body = $this->input->post('body');
$data = array(
'start' => $start,
'end' => $end,
'title' => $title,
'body' => $body
);
if($this->events->add($data))
{
$return = array(
'status' => 'success',
'message' => 'Event has been saved'
);
// print out a JSON encoded success message
echo json_encode($return);
}
else
{
$return = array(
'status' => 'failed',
'message' => 'Failed to save this event'
);
// print out a JSON encoded error message
echo json_encode($return);
}
}
また、codeigniterを使用していることを忘れたため、前のコードはコントローラーであり、このコードはモデル用です。
function add($data)
{
$this->db->insert('events', $data);
return $this->db->insert_id();
}
助けてくれてありがとう