javascript - 使用Ajax传递Json变量并解码

标签 javascript php jquery ajax json

我有一个 AJAX 脚本,我之前使用过该脚本,并且能够从 viewCommentsJson.php 检索数据,例如[{"comments":"Greta"},{"comments":“约翰”}]。我想知道它是否能够解码返回值以便正确显示它?

提前致谢

Greta
John

Main.php

<a onclick="showUser('.$row['ID'].')" method = "POST" action= "viewCommentsJson.php">Show Comments</a>

 <script>
    function showUser(str) {
      if (str=="") {
        document.getElementById("txtHint").innerHTML="";
        return;
      } 
      if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      } else { // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
      xmlhttp.open("Post","viewCommentsJson.php?q="+str,true);
      xmlhttp.send();
    }
    </script> 

viewCommentsJson.php

$com = $_REQUEST["q"];

include 'connectDatabase.php';
//opening sql table
$selected = mysql_select_db("2000",$dbhandle) 
  or die("Could not select 2000");
$arr = array();
$data = mysql_query("SELECT comments FROM comment WHERE ID = '$com'");

$rows = array();
while($r = mysql_fetch_assoc($data)) {
    $rows[] = $r;
}
print json_encode($rows);

最佳答案

既然您不介意 jQuery 解决方案,那么这里是如何完成的

function showUser(str) {
      if (str=="") {
        document.getElementById("txtHint").innerHTML="";
        return;
      } 
      $.ajax({
          type:'post',
          url: 'viewCommentsJson.php',
          data:{q:str},
          success:function(data)
          {
              data = $.parseJSON(data);
              var response;
              $.each(data, function(index, value){
                   response += value+'<br />';
              });
              $('#txtHint').html(response);
          }
      });
}

您可以引用$.ajax$.parseJSON了解更多信息。

注意:您的 SELECT comments FROM comment WHERE ID = '$com' 很容易受到 SQL 注入(inject)。至少,您应该先清理所有传入数据,然后再直接在查询中使用它。

关于javascript - 使用Ajax传递Json变量并解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730592/

相关文章:

php - 将文件系统权限限制为 apache/php,除了日志记录操作

php - 使用 codeigniter 更新查询中的 CONCAT

jQuery - 不应用不透明度

asp.net - 3 列布局,当第 1 列和第 3 列为空时,希望中间列拉伸(stretch)得更宽

javascript - 单击 JS 复制到剪贴板

javascript - 从退格事件中获取删除的元素

javascript - 分隔数组的水线查询 "OR"

php - html中的两个php字段

javascript - 从 MYSQL 表中获取 user_id 并使用 Jquery 设置 HTML 属性(img src、href 链接、h3 标签)

javascript - jQuery DataTables Ajax 数据源