2017-06-13 11 views
-1

私は複数の回答を読んだが、どれもうまくいきません。 私は何をしようとすると、PHPのforeachループのすべての結果をクリック可能にし、AJAXでそのデータを他のPHPファイルに送信することです、問題は今何でも、最後のforeachの結果は常に送信し、私がクリックした結果? (データベースなし)PHP foreachの結果ごとにAJAXのクリックポストを行う方法

ループは、関数のfunctions.phpに存在する:結果template.php処理

public function getForeachResult() 
{ 
    $response = $this->GetObject($parameters); 

     include 'template.php'; 
} 

テンプレート:template.php AJAXスクリプトで

<?php 
foreach ($response->Result->List as $key =>$value) { 

    ?><table id="mytable"><tr> 
     <th>ID</th> 
     <th>Date</th> 
     <th>firstname</th> 
     <th>lastname</th> 
    </tr> 

    <?php foreach ($value as $key=>$value) {?> 

      <tr class="myrow"> 
      <td><?php echo $value->ID; ?></td> 
      <td><?php echo date("d-m-Y", strtotime($value->Time)); ?></td> 
      <td><?php echo $value->FullName; ?></td> 
      <td><?php echo $value->LastName; ?></td> 
      </tr> 

    <?php } ?> 

    </table><br /> 

<?php } ?> 

であります

<script> 
$('.myrow').click(function() { 
    $.ajax({ 
     type: "POST", 
     cache: false, 
     url: "post.php", 
     data: { action: 'goTo', value: <?php echo $value->ID ?>} 
    }).done(function(msg) { 
     $('.Data').html(msg); 
    }); 
}); 

012:下部に呼ばれますので、どのように私はAJAXは、私がクリックしたデータを送信することを確認することができます

if($_POST['action'] == 'goTo') { 
    var_dump ($_POST); 
} 

:datのは、私が唯一のforeachループ post.phpの最後の結果を得るに送信されpost.phpで

+0

データを変更する必要が動作しませんちょうどこの

$('.myrow').click(function() { var id = $(this).children("td.first").text(); $.ajax({ type: "POST", cache: false, url: "post.php", data: { action: 'goTo', value: id} }).done(function(msg) { $('.Data').html(msg); }); 

のようにクリックされたIDを取得しています(this).find(td:first).text()。trim()} – JYoThI

+0

ここでの問題は、クリックされた行の識別名がないことです。そのため、常に最後の行しか取得できません。一意である可能性のあるクリック可能なボタンをテーブルに追加する – hungrykoala

+1

2番目のループで変数$ keyおよび$ valueを再利用すると、予期しない結果が生じる可能性があります。 2番目のループの変数の名前を変更します。 – chiliNUT

答えて

0

試してみてください。

`<td class="id"><?php echo $value->ID; ?></td> 
<script> 
$('.myrow').click(function() { 
    var id = $(this).find('.id').text(); 
    $.ajax({ 
    type: "POST", 
    cache: false, 
    url: "post.php", 
    data: { action: 'goTo', value: $(this).find(td:first).text().trim()} 
    }).done(function(msg) { 
    $('.Data').html(msg); 
    }); 
});` 

私はあなたのhtmlにループしているため、データフィールドにPHPの式はちょうど最後のIDを保持すると思いますが、あなたのajaxcallであなたは、ループの終わりに既にあります。

編集:コメントをしたあなたが好きなクリックで動的に各行の値を見つけるために、トラバース使う必要がある

+0

このクラスはうまく動作していて、ありがとうございます。 – Echatrer

0

この

var clicked_row_id = $(this).find('td:first').text().trim(); 

データはこの

data: { action: 'goTo', value: clicked_row_id } 

アップデートのように送信する必要があります1:

$('.myrow').click(function() { 

    var clicked_row_id = $(this).find('td:first').text().trim(); 

    $.ajax({ 
     type: "POST", 
     cache: false, 
     url: "post.php", 
     data: { action: 'goTo', value:clicked_row_id } 
    }).done(function(msg) { 
     $('.Data').html(msg); 
    }); 
}); 

foreachループの最後では、最後の反復値は$value->ID;にしかありません。あなたがjsでそれをエコーするとき。最後の値だけをエコーし​​ます。

0

なぜ、私はあなたの頭の中に小さなものを台無しにして、それが混乱を引き起こすと思います。あなたのPHPファイルは、Ajaxで何も別のPHPファイルに送信しません。 PHPファイルはHTMLページを作成し、このページのJavaScriptはAjaxでデータを送信します。

PHPでは、後で実行される将来のJSコードを作成することに注意してください。ダイナミック変数をAjax呼び出し中に取得したり、データを送信する必要がある場合は、PHPではなくJSで実行されます。

他の回答と同様に、PHPではなくJSでIDを取得する必要があります。{アクション:「GOTO」、値:$

+0

私のJSは最高のものではありませんが、将来的にはこれを心に留めておきます – Echatrer

0

だけあなたがする必要があるがそれは大丈夫あなたのテーブルのHTML

関連する問題