【问题标题】:What is the best way to Parse a PHP Array into Javascript?将 PHP 数组解析为 Javascript 的最佳方法是什么?
【发布时间】:2015-04-28 10:49:14
【问题描述】:

我目前有一个 PHP 文件,它可以访问我的 MySQL 数据库并提取每个玩家的姓名和分数并将它们存储在一个数组中。

 //This query grabs the top 10 scores, sorting by score and timestamp.
$query = "SELECT * FROM Score ORDER by score DESC, ts ASC LIMIT 10";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

//We find our number of rows
$result_length = mysql_num_rows($result); 

//And now iterate through our results
for($i = 0; $i < $result_length; $i++)
{
     $row = mysql_fetch_array($result);
     echo $row['name'] . "\t" . $row['score'] . "\n"; // And output them
}

对我来说,从 PHP 文件中获取名称和分数并将它们存储在 Javascript 数组中的最佳方法是什么?

【问题讨论】:

  • $row 的输出是什么?
  • 如下所述,使用数组返回元素。有一个 $results = array();然后在你的 for 循环中使用 array_push($results, array("name" => $row["name"], "score" => $row["score"]));最后用 json_encode($results);当您在前端获得响应时,您可以将响应数据和 JSON.parse() 转换为您可以访问的变量 parsedVariable[0].name、parsedVariable[0].score 等。
  • 我在我的 Javascript 代码中添加了以下函数://Leaderboard $.get( "HighScores/TopScores.php", function(data) { var results = JSON.parse(data); console.log(2); results.forEach(function(result){ console.log( result.name +" - "+ result.score ); console.log(1) }); }, "json" ); 但我的游戏似乎没有将任何内容打印到控制台,而不是名称、分数、“1”或“2”?

标签: javascript php jquery arrays


【解决方案1】:

存储它们的最佳方法是将它们存储在 json 中。使用以下功能

json_encode(arrayname);

在html中使用

$.parsejson(responsevariable);

获取原始值。

【讨论】:

    【解决方案2】:

    我建议将 json_encoded 数组提供给 javascript 变量 (json_encode()),并使用 javascript json 解码功能,这样你就会得到你想要的:)

    【讨论】:

      【解决方案3】:

      创建结果变量

      $results = array();
      

      将结果存储在循环中

      array_push($results, array("name" => $row["name"], "score" => $row["score"]));
      

      最后返回它

      echo json_encode($results);
      

      当你在前端得到响应时,你可以把响应数据和 JSON.parse() 变成一个你可以访问的变量

      var results = JSON.parse(data);
      
      results.forEach(function(result){
          console.log( result.name +" - "+ result.score );
      });
      

      【讨论】:

      • 我在我的 Javascript 代码中添加了以下函数://Leaderboard $.get( "HighScores/TopScores.php", function(data) { var results = JSON.parse(data); console.log(2); results.forEach(function(result){ console.log( result.name +" - "+ result.score ); console.log(1) }); }, "json" ); 但我的游戏似乎没有将任何内容打印到控制台,而不是名称、分数、“1”或“2”?
      • 尝试做一个 console.log(data) 看看它会返回什么。
      • 我无法让控制台使用 $.get 函数记录任何内容,因此我将其更改为:$.ajax({ url: 'HighScores/TopScores.php', type: 'get', success: function(data){ console.log(data); results = JSON.parse(data); console.log(data); LoadedName = results[0].name; LoadedScore = results[0].score; } }); 输出:[{"name":"Conor","score":"100"},{"name":"Mark","score":"100"}]
      • 所以这似乎是正确的!但是现在如果我使用:`results = JSON.parse(data);` Chrome 控制台给了我以下错误:Uncaught SyntaxError: Unexpected token &lt; 在我的 HTML 页面的第 1 行(仅加载 Javascript 文件)
      • 没关系,我设法解决了! PHP 文件还发回了一个错误警告我 mysql_connect 已被弃用,所以一旦我取消了警告,我的代码就可以正常工作了!
      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 2011-01-31
      • 2019-09-16
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 2011-11-19
      • 2023-03-26
      相关资源
      最近更新 更多