2016-04-23 14 views
0

jQueryとの戦いにはかなり心地よくあります。 私はプロジェクトを編集するために使用されるブートストラップ・モーダルを持っており、編集ボタンがクリックされたときにAJAXを使用してフィールドに値を設定しています。これは素晴らしい作品が、プロジェクトは(モーダルではチェックボックス)複数の部門にすることができPHPで複数の重複キーをjsonに返すAJAXレスポンス

これは私がモーダルを移入しています方法です:

$.ajax({ 
url: 'project_tasks.php?task=select_project&pjct_id=' + id, 
method: 'GET', 
dataType: 'json' 
}).success(function(response) { 
// Populate the form fields with the data returned from server 
$('#edit_project') 
    .find('[name="project_id"]').val(response.project_id).end() 
    .find('[name="project_title"]').val(response.project_title).end() 
    .find('[name="project_bgcolor"]').val(response.project_bgcolor).end() 
    .find('[name="project_desc"]').val(response.project_desc).end() 
    .find(':checkbox[name^="department"]').each(function() { 
    if($(this).val() == response.dpmt_id) { 
     console.log("depart: " + response.dpmt_id); 
     $(this).prop('checked', true); 
     } 
    }); 
}); 

、PHPは(まだエスケープないけど行います)されます:

$pjct_id = $_GET['pjct_id']; 
    $pjct = Projects::find_by_id($pjct_id); 

    $dpmts = Projects_departments::find_all_by_pjct_id($pjct_id); 
    foreach ($dpmts as $dpmt) { 
     $response_array['dpmt'] = $dpmt->department_id; 
    } 
    $response_array['project_id'] .= $pjct->id; 
    $response_array['project_title'] .= $pjct->project_title; 
    $response_array['project_bgcolor'] .= $pjct->project_bgcolor; 
    $response_array['project_desc'] .= $pjct->project_desc; 
    echo json_encode($response_array); 

明らかチェックボックスをチェックするために、私は「dpmt」のたびに上書きされていることを知っているので、私は唯一のJSON dpmt : 1ではなく、各部署のIDを取得しますが、私はdpmt: 1, dpmt: 2, dpmt: 3ような何かを達成したいと思いますし、そのループスルー。

うまくいけば私は十分に(妻は私を急いでいる) 前もってありがとう。

答えて

0

PHP:整数/文字列の代わりにIDの配列を返します。

... 
foreach ($dpmts as $dpmt) { 
    $response_array['dpmt'][] = $dpmt->department_id; 
} 
... 

ザ・ジャバスクリプト:結合されたセレクタを使用するので、すべてのチェックボックスをループする必要はありません。 PHPが返すdpmt_idsにのみループを使用します。

$('#edit_project') 
    .find('[name="project_id"]').val(response.project_id).end() 
    .find('[name="project_title"]').val(response.project_title).end() 
    .find('[name="project_bgcolor"]').val(response.project_bgcolor).end() 
    .find('[name="project_desc"]').val(response.project_desc).end() 
; 
for (i=0; i< response.dpmt_id.length; ++i) { 
    $('#edit_project').find(':checkbox[name="department[]"][value="'+response.dpmt_id[i]+'"]').prop('checked',true); 
} 
+0

完璧、ありがとうございます!私はfind( ':checkbox [name = "department"を検索する(':checkbox [name = "department []" –

+0

フィードバックに感謝します。 else。 –

関連する問題