2016-11-30 56 views
1

とAJAXリクエストで多次元配列内の値は多次元配列を呼び出し、私は値などを取得する単純な配列のすべての値取得どのように私はアヤックスに戻るjqueryの

ペソ

public function ExampleAction() 
{ 

$arr = array(array("title" => 'Example Title 1',"description" => "Morbi leo risus, porta ac consectetur ac","datetime"=>new \DateTime("tomorrow")), 
       array("title" => 'Example Title 2',"description" => "Morbi leo risus, porta ac consectetur ac","datetime"=>new \DateTime("today")) 
    ); 
    return new JsonResponse(array(
     'data' =>$arr, 
     'success' => true), 200); 
} 

を取得する必要がありますこれはJavascriptで:

$.ajax({ 
type: 'POST', 
url: Routing.generate('example'), 
data: {}, 
dataType: 'json', 
success: function(response) { 
    for (var key in response.data) { 

    title= response.data[key]; 
    description= response.data[key]; 
    datetime= response.data[key]; 

    },   
    } 
}) 

しかし、私は多次元配列のためにそれを得る方法がわかりません。私はいくつかの方法で試したが、成功しなかった。

ご協力いただきありがとうございます。

編集済み--------------------------初期の問題----------------- -------------

を私はこのような一つのオブジェクトを取得するために必要な:

$.ajax({ 
type: 'POST', 
url: Routing.generate('example'), 
data: {}, 
dataType: 'json', 
success: function(response) { 

    $('#calendar').eCalendar({ 
    ... 
    events: [{ 
     title: 'Example Title 1', 
     description: 'Description 1. Without link', 
     datetime: new Date(2016, 11, 30) 
    }, 
    { 
     title: 'Example Title 2', 
     description: 'Description 2.', 
     datetime: new Date(2016, 10, 23), 
    }] 
    }); 
} 
}) 

だから私は次のように置く:

$.ajax({ 
type: 'POST', 
url: Routing.generate('example'), 
data: {}, 
dataType: 'json', 
success: function(response) { 

    $('#calendar').eCalendar({ 
    .... 
    events: response.data, 
    .... 

    }); 
} 
}) 

しかし、これは私を与えました次のエラー:

TypeError: d.getDate is not a function 
    if (d.getDate() == day && d.getMonth() == dMonth && d.getFullYear() == dYear) {... 

私はそれがjavascriptで示されたものと同じ結果を与えないPHPで日付を取得する方法のためだと思います。だから、私はajax呼び出しでデータを取得して手動で割り当てたいのですが、オブジェクトに割り当てていたので間違っていました。どうすればこの問題を解決できますか?

+0

成功関数の最初の文としてconsole.log(JSON.stringify(response))を使用すると便利です。これにより、コンソールにJSONの構造が表示されます(ブラウザのF12、次に[コンソール]タブを選択します)。それで、データがどのようにマップされているか、必要なものを手に入れる方法をもっと理解することができます。 –

+0

オブジェクト全体を反復処理する必要がある場合は、ここでいくつかの答えを使用することができます。http://stackoverflow.com/questions/8312459/iterate-through-object-properties –

+0

こんにちは@VanquishedWombat、私はすでにAjaxレスポンスの構造を見て、問題は私が内部配列の値にアクセスする方法を知らないということです。 – Joseph

答えて

1

実際には、多次元配列はありません。第2レベルのオブジェクトを持つオブジェクトの配列があります。しかし、なぜそう思うのか分かります。試してみてください

success: function(response) { 
    for (var i = 0; i < response.data.length; i = i + 1) { 

    title = response.data[i].title; 
    description = response.data[i].description; 
    datetime = response.data[i].datetime; 
    date = datetime.date 
    timezone_type = datetime.timezone_type 
    timezone = datetime.timezone 

    console.log('timezone=' + timezone) 

    }, 

datetimeオブジェクトは扱いにくいですが、それほど難しくはありません。

EDIT:データがcalandarプラグインに渡されているのを確認しましたが、あなたの問題はJSON形式の文字列であることに関連していますが、d.getDate()エラーはそのことを示しています日付タイプが必要です。あなたは、このコードは、データ配列を歩くとdatetime.date値からjavascriptの日付は、その日付とを置き換えますnew Date(stringval)

success: function(response) { 
    for (var i = 0; i < response.data.length; i = i + 1) { 
    var myDate = new Date(response.data[i].datetime.date) 
    response.data[i].date = myDate 
    } 

    $('#calendar').eCalendar({ 
    ... 
    events: response.data 

    }, 

を使用して、文字列から日付を作ることができます。

ただし、このコードではタイムゾーンの詳細は使用されません。その点については、プラグインサイトのドキュメントを参照する必要があります。https://github.com/themouette/jquery-week-calendar/wiki

EDIT:文字列をチョップしないでnew Date()を使用する場合は、日付形式について規定の形式を使用する必要があります。あなたの形式は次のとおりです。

"date":"2016-12-30 00:00:00.000000"

私は、これは無効な形式かもしれないと思います。私は、日付と時刻の正しいバージョンが

だろうと信じて「『日付』: 『2016-12-30T00:00:00.000』」

注時間前にTおよびミリ秒を3桁のみです。私はあなたが必要とする可能性のあるタイムゾーンを含むjavascriptの日付形式があると信じています。その特定の科目に関する別の質問をすると、ここに追加するよりも良い結果が得られます。

+0

それは私が最初に持っていたアイデアでしたが、オブジェクト内で間違って使用していたことに気付きました。ありがとうございました。 – Joseph

+0

もう一度@VanquishedWombat、私は私の最初の問題の説明を追加し、私はあなたがそれらを必要とする関数に直接ajax応答から値を渡すことができるかを確認するために、あなたの助けが必要です。 – Joseph

+0

Miの問題はこのようなものですhttp://stackoverflow.com/questions/6680878/how-to-retrieve-info-from-database-using-ajax-json-jquery-week-calendar – Joseph

0

ここでオブジェクトを使用してください。
戻りたいデータをすべて1つのオブジェクトに入れると、データを渡す際に問題は発生しません。それを元に戻すと、データを操作できます。

リターン新しいJsonResponse({ 'データ':$編曲、 '成功':真} 、200);

+0

こんにちは@Daryl、私はそれを修正し、次のエラーを受け取りました: 'Parse:構文エラー、予期しない' {' in ... ' – Joseph

+0

try return new JsonResponse(JSON.stringify({' data ':$ arr、 'success':true})、200); – Daryl

+0

同じエラーが表示されます。@Daryl – Joseph

関連する問題