0

jquery からデータを保存しようとしていますが、うまくいかないので、助けが必要です! CakePHP 2.3 を使用しています。これが私のjQueryです

$.ajax({
    url: 'http://localhost/test/reservations/save',
    type: 'POST',
    data: {reservation_time_from : calEvent.start, reservation_time_to: calEvent.end, user_id : "1", laboratory_id : "1"},
    success: function(data) {
        alert("saved")
    }
}); 

コントローラ

 public function save() {
    if ($this->data != null) {
        $this->Reservation->save($this->request->data);
    }
    $this->autoRender = false;
}

jQuery の日付形式 (Mon Aug 26 2013 11:00:00 GMT+0200) が原因で機能しないのでしょうか?

4

2 に答える 2

1

あなたのデータは、 に渡すために正しくフォーマットされていませんModel::save()。ドキュメントを参照してください。

http://book.cakephp.org/2.0/en/models/ Saving-your-data.html

次の形式にする必要があります。

Array
(
    [ModelName] => Array
    (
        [fieldname1] => 'value'
        [fieldname2] => 'value'
    )
)

dataしたがって、AJAX 呼び出しプロパティに渡されるオブジェクトは次のようになります。

{ModelName: {fieldname1: 1, fieldname2: 2}}

あなたの場合、それは次のようになります:

{Reservation: {reservation_time_from: calEvent.start, reservation_time_to: calEvent.end, user_id: 1, laboratory_id: 1}}

POST リクエストの代わりにチェックするdataことnull 良い考えです。

if($this->request->is('post')) {
    $this->Reservation->save($this->request->data);
}

また、リクエストをブラックホール化する可​​能性のあるセキュリティ コンポーネントを使用しているかどうかも確認してください。

最後になりましたが、すでに言及した日付形式を確認してください。検証が含まれる場合、これも問題になる可能性があります。少なくとも、テーブルの列が別の形式を想定している場合は問題です。したがって、必要に応じて日付を適切にフォーマットします。FullCalenderを使用している場合は、 Convert JS date time to MySQL datetimeまたはhttp://arshaw.com/fullcalendar/docs/utilities/formatDate/を参照してください (イベント/プロパティ名から推測するだけです)。 .

于 2013-08-25T10:57:56.523 に答える
0
data: {reservation_time_from : calEvent.start, reservation_time_to: calEvent.end, user_id : "1", laboratory_id : "1"},

有効な json ではありません。

有効と見なされるには、キーに二重引用符が必要です。

reserved_time_from が変数の場合、オブジェクト リテラルを作成し、次の方法で追加する必要があります。

myDataObject = {};
myDataObject[reservation_time_from] = calEvent.Start;

json オブジェクトを作成したら、それをデータ キーの値として渡すことができます。

于 2013-08-24T20:12:50.773 に答える