基于多个不同的ID同时将内容加载到表格单元格中

时间:2018-02-06 19:45:14

标签: javascript jquery

我想在以下场景中寻求帮助: 我在PHP数组中有一个SQL查询结果,包含profileids,名称等。这些profileid不是静态的,它们来自SQL。 (不能硬编码到javascript中)

我想查询givedata.php以获取所有成员的其他数据,并在选中复选框时将它们加载到表的相应单元格中。在取消选中事件时,我想清空所有相应的单元格。我想我需要在jquery中使用一种foreach循环。我只有一个复选框,这个单个事件应该处理针对givedata.php的所有50个查询。

givedata.php:

<?php
//stupid example
echo "You requested".$_REQUEST['profid']."put this to the appropriate row";
?>

的index.php:

<?php
//ab3x is the profileid
$members[‘ab3x’][‘profileid']=“ab3x";
$members[‘ab3x’][‘name']="john";
$members['ab3x'][’score']=1000;
//...
$members['cssd’][‘name']="doe";
$members[‘cssd'][’score’]=2000;
?>
...
$(document).ready(function(){
    $("#loadbox").change(function () {

    <?php
    foreach($members as $member)
        {
        $php_array[]=$member[‘profileid’];
        }
    $js_array = json_encode($php_array);
    echo "var javascript_array = ". $js_array . ";\n";
    ?>      

    //What should come here in order to call the givedata.php for 
    //all profids and load the content into the appropriate cells 
    //$( “.profid_ab3x" ).html( data );
    //$( “.profid_cssd" ).html( data );

    });
)}
...
<input type='checkbox' name='load' id='loadbox' value='no'>
...    
<table>
    <?php
        //there are 50 members
        foreach($members as $member){
        echo "<tr>
                <td>”.$member[’name']."</td>
                <td id='profid_".$member[‘profileid’].”’> **HERE COMES THE DYNAMIC CONTENT**  </td>
            </tr>”;
        }
     ?>
</table>

EDITED,基于Cam的想法将php数组添加到js数组

2 个答案:

答案 0 :(得分:1)

好,
你要的第一件事是givedata.php返回一个应该由javascript处理的json,然后返回通过GET参数查询给你的所有数据,我在想像

<?php

header("Content-type: application/json");

$json_response = array();

foreach($_GET["id"] as $id){
  array_push($json_response, array( "id" => $id, "data" => get_member_data($id)));
}


echo json_encode($json_response);

?>

我应该返回一个包含json中所有相应数据的数组,以供浏览器解析。

你还需要你的html中的复选框:

<input type="checkbox" onchange="check_change(this);">

你的javascript看起来像这样:

function check_change(check){
    if(check.checked){
        loadCells();
    }else{
        deleteCells();
    }
}

function loadCells(){
    $.ajax({
        url:"givedata.php",
        data: javascriptArray,
        success: function(membersData){

            var dataCell;

            for(var i = 0; i < membersData.length; i++){
                dataCell = $(".dataCell #" + membersData.id);
                //do what you must to show the member data
            }
        }
    });
}

function deleteCells(){
    $(".dataCell").each( function(cell){
        //do what you must to clear the data
    });
}

假设每个dataCell都有.dataCell类和带有成员Id的id。

另外,我关注这一行:

 $php_array[]=$member[‘profileid’];

创建数组并向其追加元素的正确方法是对其进行实例化,然后调用array_push,如下所示:

$php_array = array();
array_push($php_array,$element_to_push);

答案 1 :(得分:0)

基于Sacha的想法的最终解决方案。 THX。

警告!我对Javascript的了解很少!在复制粘贴之前查看。这个对我有用。也许有人来编辑它。

get_chests.php

array_push($json_response, array( "id" => $reqprofileid, "data" => $str ));
echo json_encode($json_response);

的index.php

$('#ladakbutton').change(function() {
    if(this.checked != true){
    deleteCells();
    }
if(this.checked == true){
    loadCells();
    }
});


function loadCells(){
    <?php
    $js_array = json_encode($php_array);
    echo "var jsarray = ". $js_array . ";\n";
    ?>
    var data_str = jsarray.join(",");
    $.ajax({
        type: "POST",
        dataType: 'json',
        url:"includes/get_chests.php",
        data:{
            ids: data_str
            },
        success: function(membersData){
            $(".ladak").show();
            var i;
            for (i = 0; i < membersData.length; i++) {
                $('#ladak'+membersData[i].id).html(membersData[i].data);
            }
        }
    });
}
function deleteCells(){
    $('.ladak').empty();
    $(".ladak").hide();
 }

按钮

 <input type="checkbox" id='ladakbutton’>

<?php
    echo "<tr>";
    echo "<td class='ladak'" id='ladak".$member['profileid']."' colspan=\"5\”>”;
?>