我想在以下场景中寻求帮助: 我在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数组
答案 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\”>”;
?>