将php数组移动到jquery中进行操作
我有一个页面,它通过PHP执行SQL查询并生成一个小数组。我希望同一页面上的jquery能够使用数组,或者更具体地说,使用数组中的变量 代码如下:将php数组移动到jquery中进行操作,php,javascript,jquery,arrays,json,Php,Javascript,Jquery,Arrays,Json,我有一个页面,它通过PHP执行SQL查询并生成一个小数组。我希望同一页面上的jquery能够使用数组,或者更具体地说,使用数组中的变量 代码如下: $result = mysql_query("SELECT characters_ID, name FROM characters where whichfamily = '$famID' && deathdate = '' && isfemale = '0' && $currentturn >
$result = mysql_query("SELECT characters_ID, name FROM characters where whichfamily = '$famID' && deathdate = '' && isfemale = '0' && $currentturn > borndate + 128",$db);
$rowcheck = mysql_num_rows($result);
//echo $rowcheck;
$suitablemembers = array();
$i = '0';
while ($row = mysql_fetch_assoc($result)){
foreach ($row as $col => $val){
if ($col == 'characters_ID') {
$suitablemembers['idnum'][$i] = $val;
}
if ($col == 'name') {
$suitablemembers['name'][$i] = $val;
}
//$_SESSION['currentplayerCP'] = $val;
//$_SESSION['currentplayerMaxCP'] = $val;
}
$i++;
}
print_r($suitablemembers);
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// somehow do a while or loop to display data from that array
}); // end displaysomedata click function
打印输出如下所示:
数组([idnum]=>Array([0]=>3[1]=>10)[name]=>Array([0]=>Orland[1]=>Raguet))
更多代码如下:
$result = mysql_query("SELECT characters_ID, name FROM characters where whichfamily = '$famID' && deathdate = '' && isfemale = '0' && $currentturn > borndate + 128",$db);
$rowcheck = mysql_num_rows($result);
//echo $rowcheck;
$suitablemembers = array();
$i = '0';
while ($row = mysql_fetch_assoc($result)){
foreach ($row as $col => $val){
if ($col == 'characters_ID') {
$suitablemembers['idnum'][$i] = $val;
}
if ($col == 'name') {
$suitablemembers['name'][$i] = $val;
}
//$_SESSION['currentplayerCP'] = $val;
//$_SESSION['currentplayerMaxCP'] = $val;
}
$i++;
}
print_r($suitablemembers);
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// somehow do a while or loop to display data from that array
}); // end displaysomedata click function
我曾经尝试过JSON封装,但我不确定这是否是一个可行的解决方案
如何将php数组中的数据移动到jquery变量中(在循环中?将数据结果编码为JSON,并在jquery脚本中使用
ajax
或getJSON
检索数据
编辑:
我想你需要一个例子如何做到这一点
// At the last of your php script, uncomment this
// print_r($suitablemembers);
// and give a json instead
header('Content-Type: application/json');
echo json_encode($suitablemembers);
然后从html或js文件(或内联js)执行ajax或使用GetJSON速记
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// Use PHP to output the JSON-encoded array into a javascript variable
$.getJSON('path/to/above/script.php', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(key + ':' + val);
});
alert(items.join(''));
});
});
将数据结果编码为JSON,并在jquery脚本中使用
ajax
或getJSON
检索它
编辑:
我想你需要一个例子如何做到这一点
// At the last of your php script, uncomment this
// print_r($suitablemembers);
// and give a json instead
header('Content-Type: application/json');
echo json_encode($suitablemembers);
然后从html或js文件(或内联js)执行ajax或使用GetJSON速记
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// Use PHP to output the JSON-encoded array into a javascript variable
$.getJSON('path/to/above/script.php', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(key + ':' + val);
});
alert(items.join(''));
});
});
JSON正是您需要的解决方案。您的PHP脚本将数组编码为JSON,您可以在页面上对其进行回显 这假设您不需要从PHP动态检索数据,而只需要在页面加载时生成一次数据。如果需要动态检索它,则需要在jQuery中使用
$.ajax()
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// Use PHP to output the JSON-encoded array into a javascript variable
var jsonobj = <?php echo json_encode($suitablemembers); ?>;
// Now you can do whatever you need to with `jsonobj`
});
$('displaysomedata')。单击(函数(){
//警报(“点击按钮”);
//使用PHP将JSON编码的数组输出到javascript变量中
var jsonobj=;
//现在,您可以使用'jsonobj'执行任何需要的操作`
});
注意:为了正常工作,上面的Javascript必须内联到PHP生成的同一页面上。如果它是通过
包含的,PHP无法修改它 JSON正是您需要的解决方案。您的PHP脚本将数组编码为JSON,您可以在页面上对其进行回显
这假设您不需要从PHP动态检索数据,而只需要在页面加载时生成一次数据。如果需要动态检索它,则需要在jQuery中使用$.ajax()
$('#displaysomedata').click(function() {
//alert("Button clicked.");
// Use PHP to output the JSON-encoded array into a javascript variable
var jsonobj = <?php echo json_encode($suitablemembers); ?>;
// Now you can do whatever you need to with `jsonobj`
});
$('displaysomedata')。单击(函数(){
//警报(“点击按钮”);
//使用PHP将JSON编码的数组输出到javascript变量中
var jsonobj=;
//现在,您可以使用'jsonobj'执行任何需要的操作`
});
注意:为了正常工作,上面的Javascript必须内联到PHP生成的同一页面上。如果它是通过包含的,PHP无法修改它 看看PHP函数,该页面上的第一个示例是如何将数组编码为JSON。如toopay所述,您可以使用getJSON从JQuery端加载它。看看PHP函数,该页面上的第一个示例是如何将数组编码为JSON。您可以使用getJSON从JQuery端加载它,正如toopay所指出的那样。//main.js
var system_array=[];
function get_array(){
$.getJSON("/json/get_array.php", function(json) {
system_array=json;
});
}
//get_array.php
<?php
$result_array=array(1,2,3,4,5);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($result_array);
exit();
?>
//main.js
var system_array=[];
function get_array(){
$.getJSON("/json/get_array.php", function(json) {
system_array=json;
});
}
//get_array.php
<?php
$result_array=array(1,2,3,4,5);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($result_array);
exit();
?>
正如您所说,页面加载只需一次。我试图包含上面显示的代码,但它不起作用,我在下面添加了警报(jsonobj),但什么也没有得到。我必须再次解码吗?查看您的页面源代码,确保PHP在那里输出了一些内容。注意,您的Javascript必须内联在PHP呈现的同一页面上——如果包含在脚本src中,这将不起作用。如果JSON字符串实际上在源代码中,console.dir(jsonobj)代码>在Firebug或Chrome/Safari开发者工具或IE8/9开发者工具控制台(F12)中,很抱歉这个新手问题。当您说js必须内联在同一页面上,而不是在脚本src标记中时。。。我有点迷路了。如果不在src标记中,如何呈现JS$(function(){$('#testbutton')。单击(function(){alert(“testbutton clicked”);var jsonobj=alert(jsonobj);})@jeremy如果您的Javascript直接位于
标记中,您就没事了(这是内联的)。如果你在脚本标签中调用一个远程js文件,比如
,那么PHP将无法工作。正如你所说,只需在页面加载时调用一次。我试图包含上面显示的代码,但它不起作用,我在下面添加了警报(jsonobj),但什么也没有得到。我必须再次解码吗?查看您的页面源代码,确保PHP在那里输出了一些内容。注意,您的Javascript必须内联在PHP呈现的同一页面上——如果包含在脚本src中,这将不起作用。如果JSON字符串实际上在源代码中,console.dir(jsonobj)代码>在Firebug或Chrome/Safari开发者工具或IE8/9开发者工具控制台(F12)中,很抱歉这个新手问题。当您说js必须内联在同一页面上,而不是在脚本src标记中时。。。我有点迷路了。如果不在src标记中,如何呈现JS$(function(){$('#testbutton')。单击(function(){alert(“testbutton clicked”);var jsonobj=alert(jsonobj);})@jeremy如果您的Javascript直接位于
标记中,您就没事了(这是内联的)。如果调用脚本标记中的远程js文件,如
,则PHP将无法工作。