【问题标题】:Moving php array into jquery for manipulation将 php 数组移动到 jquery 中进行操作
【发布时间】:2011-08-24 20:54:20
【问题描述】:

我有一个通过 PHP 执行 SQL 查询并生成一个小数组的页面。我想让 jquery 在同一页面上能够使用数组,或者更具体地说,能够使用数组中的变量。

代码如下:

$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);

print_r 给出如下输出:

Array ([idnum] => Array ([0] => 3 [1] => 10) [name] => Array ([0] => Orland [1] => Raguet))

更多代码如下:

$('#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 变量中(在循环中?)

【问题讨论】:

    标签: php javascript jquery arrays json


    【解决方案1】:

    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`
     });
    

    注意:为使其正常工作,上面的 Javascript 必须内联在 PHP 生成的同一页面上。如果通过&lt;script src=> 包含,PHP 无法对其进行修改。

    【讨论】:

    • 如您所说,仅在页面加载时进行一次。我试图包含上面显示的代码,但它不起作用,我在下面添加了 alert(jsonobj) ,但什么也没得到。我需要重新解码吗?
    • 查看您的页面源代码并确保 PHP 在那里输出了一些内容。请注意,您的 Javascript 必须内联在 PHP 呈现的同一页面上 - 如果它包含在脚本 src 中,这将不起作用。如果 JSON 字符串确实存在于源代码中,console.dir(jsonobj); 在 Firebug 或 Chrome/Safari 开发人员工具中,或 IE8/9 开发人员工具控制台 (F12)
    • 抱歉新手问题。当您说 js 必须在同一页面上内联,而不是在脚本 src 标签中时...我有点迷路了。如果不在 src 标签中,我该如何渲染该 JS?
    • @jeremy 如果您的 Javascript 直接在 &lt;script&gt; 标记内,那么您很好(这是内联的)。如果你在 &lt;script type='text/javascript' src='somefile.js'&gt;&lt;/script&gt; 这样的脚本标签中调用远程 js 文件,那么 PHP 将无法工作。
    【解决方案2】:

    看看 PHP 函数json_encode(),该页面上的第一个示例是如何将数组编码为 JSON。如toopay所述,您可以使用getJSON从JQuery端加载它。

    【讨论】:

      【解决方案3】:

      //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();
      ?>
      

      【讨论】:

        【解决方案4】:

        将您的数据结果编码为 JSON,并在您的 jquery 脚本中使用 ajaxgetJSON 检索它。

        编辑:

        我想你需要一个示例如何做到这一点......

        // 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 或使用 get json 速记

        $('#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(''));
        
            });
        });
        

        【讨论】:

          猜你喜欢
          • 2013-05-13
          • 1970-01-01
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-12
          • 1970-01-01
          • 2023-04-05
          相关资源
          最近更新 更多