2012-04-21 13 views
11

私の全体的な目標は、ページ上のすべてのドロップダウンをすべて取得し、それをPHPファイルで処理するように送信することです。オブジェクトの配列をajax投稿データとして送信しますか?

今、jQueryでやっている方法は、全体的なスケジュール配列を作成してから、その配列に更新する各要素を追加しています。ですから、私は次のようなものを持っています:

var schedule = []; 
var data = { 
    'user_id' : '12', 
    'day_of_week' : 'Monday', 
    'when' : 'start', 
    'time' : '12 AM' 
} 
schedule.push(data); 
var data = { 
    'user_id' : '13', 
    'day_of_week' : 'Tuesday', 
    'when' : 'end', 
    'time' : '12 AM' 
} 
schedule.push(data); 
// schedule would have two objects in it 

明らかにループやものです。

私のスケジュール配列には、この場合は2つのオブジェクトがあります。

ここで、そのスケジュール配列をajaxデータとして使用できますか?

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: schedule, 
    type: 'POST' 
}); 

しかし、私が代わりにschedule[0]に変更した場合、それは明らかに、唯一スケジュール配列内の最初のもののために、うまく動作します。私のような何かをする場合は動作しません。 JSONとして

+0

'' ..scheduleは変数ではなく、文字列で削除します。また、jQueryはサーバー上でデコードする必要があるJSONオブジェクトとして配列をエンコードします。 – gpasci

+1

私が間違っていない限り、Scheduleは配列の配列ではありません。 'data'はオブジェクトなので、オブジェクトの配列です。 – xbonez

+0

'type: 'JSON''を使用していない特定の理由はありますか? –

答えて

3

正しいバージョンのjQueryを使用していることを確認してください。以前のバージョンでは、スティングを渡す必要がありました。新しいバージョンでは、data変数に「インテリジェントな推測」を使用しています。 jQueryに、dataTypeパラメータを使用してJavaScriptオブジェクトを渡していることを明示的に伝えるか、jQueryに認識させることができます。

ドキュメント

jQuery.ajax()からhttp://api.jquery.com/jQuery.ajax/

2

パスは:

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: {schedule: schedule}, 
    type: 'POST', 
    dataType: 'JSON' 
}); 

これは、サーバー側の言語を解析することができますサーバーにJSONエンコードされた文字列を送信します。 (PHPでは、json_decode()で終わります)。

+1

json_deocde()に何を渡しますか? $ _POST ['schedule']? – Ben

+0

@Ben:はい。 'schedule'はJSON文字列で構成されます。 – xbonez

+0

いずれにせよ、私は何も得ていない。私は 'type: 'POST'と' type: 'JSON''をデータの組み合わせで試してみました。何が間違っているのでしょうか? Ajaxの前に 'console.log(schedule)'を実行すると、すべてのオブジェクトを見ることができるので、そこにいることがわかります。 – Ben

11

data属性はオブジェクトである必要があります。

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: {schedule: schedule}, 
    type: 'POST' 
}); 

あなたはPHPの例のためにこれを受信した場合、あなたが$_POST["schedule"]を持っているので:あなたは何ができるか

はこれです。これはJavaScriptとまったく同じです。

ああ私も忘れてしまった... .serialize().serializeArray()もご覧ください!

+0

現在のjQueryドキュメントには、オブジェクト、文字列または配列を指定できます。 –

関連する問題