2017-01-03 4 views
0

テーブル行の文字列を生成してAJAX呼び出しで戻すPHPスクリプトがあります。この文字列には、tbodyタグ(<tr>1</tr><tr>2</tr>)の間のすべてのコンテンツが含まれます。Javascriptテーブル行を配列にプッシュ

このデータはAJAXコールで返され、私の成功関数にアクセスできます。

PHP:

$outputArray = Array(); 
$recordCount = 0; 
$i = 0; 

// Loop over our data 
foreach($objData->data as $r){ 

    $outputArray[$i++] = '<tr data-qid="'.$r->identifierQID.'" class="primaryValue ' . searchMarkup($markupData, $r->identifierQID) . '">'; 

    // Loop over our fields 
    foreach($r as $key => $value){ 

     // Vars 
     $fieldID = str_replace('_', '', $key); 

     // Don't include our identifier columns 
     if(!in_array($fieldID, $ignore)){ 
     $outputArray[$i++] = '<td data-tableexport-display="always" class="small' . ($exportFields ? (in_array($fieldID, $exportFields) ? ' hidden' : '') : '') . '">' . formatFieldData($fieldID, $value) . '</td>'; 
     } 

    } 

    // Notes always come last 
    $outputArray[$i++] = '<td data-tableexport-display="always" class="notesTD allowContext hidden"></td>'; 

    $outputArray[$i++] = '</tr>'; 
    $recordCount++; 

} 

// Join our rows array and return it 
$end = microtime(true); 
$timer = number_format($end - $start, 2); 
return array(join("",$outputArray), $recordCount, $timer);` 

私はDOMで大量のデータを処理するために使用されるclusterizeと呼ばれるプラグインを使用して、このデータを使用しようとしています。各行は配列内の独自の値である必要があります。

例:var data = ['<tr>…</tr>', '<tr>…</tr>', …];

私の問題は私の出力は、すべての行を含む連結文字列として返されていることです。

私の質問:

どのように私は、私は戻って私の成功の機能を提供することができ、アレイに独自の値として、各TRを得ることについて行くことができますか? PHP側でこれを行うのが最善か、javascriptを使って最終的な文字列を配列に分解する方法がありますか?

+0

なぜPHPの最後の配列に参加しますか?問題が解決されたことをやったことがなかったようです。 – aw04

+0

@ aw04 - すべての行は配列値です。 'tr'、' td'などです。文字列をすべて単一の変数として格納することなく、文字列を連結する方法です。私はそれを削除する場合は、キー/値をすべての行/セルなどの代わりに行ごとに1つの代わりに配列を取得します。 – SBB

+0

それを得ました、私の答えを見てください – aw04

答えて

0

サーバーから必要なときに各行を戻して、無駄な作業(つまり、後で分割して結合)を単純化し、回避します。ここには、(テストされていない)例があります:

$outputArray = Array(); 

foreach($objData->data as $r){ 
    $row = '<tr data-qid="'.$r->identifierQID.'" class="primaryValue ' . searchMarkup($markupData, $r->identifierQID) . '">'; 

    foreach($r as $key => $value){ 
    $fieldID = str_replace('_', '', $key); 

    if(!in_array($fieldID, $ignore)){ 
     $row .= '<td data-tableexport-display="always" class="small' . ($exportFields ? (in_array($fieldID, $exportFields) ? ' hidden' : '') : '') . '">' . formatFieldData($fieldID, $value) . '</td>'; 
    } 
    } 

    $row .= '<td data-tableexport-display="always" class="notesTD allowContext hidden"></td>'; 
    $row .= '</tr>'; 

    $outputArray[] = $row; 
} 

$end = microtime(true); 
$timer = number_format($end - $start, 2); 

return array($outputArray, count($outputArray), $timer); 
関連する問題