javascript - 如何使用 JQuery 获取 PHP 数组结果

标签 javascript php jquery arrays

下面是最终构建数组的几个查询。

if(isset($_POST['getarray'])){
    try{
        $ret = array();
        $stmt = $db->prepare('SELECT groupdate, groupid
                                    FROM participationtemp
                                    WHERE memberid = :memberid
                                    AND groupid = :groupid
                                    ORDER BY groupdate, groupid DESC');
        $stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
        $stmt->bindValue(':memberid', $_SESSION['memberid'], PDO::PARAM_INT);
        $stmt->execute();
        $result = $stmt->fetchAll();
        foreach($result as $row){
            $attenddate = $row[0];
            $stmt = $db->prepare('SELECT h.clientid, attend, attend_date
                                        FROM history AS h 
                                        INNER JOIN suspended AS s on s.clientid = h.clientid                                    
                                        WHERE h.memberid = :memberid  
                                        AND h.groupid = :groupid
                                        AND attend_date = :attenddate
                                        AND suspend = "N"');
            $stmt->bindValue(':memberid', $_SESSION["memberid"], PDO::PARAM_INT);
            $stmt->bindValue(':groupid', $_POST['groupid'], PDO::PARAM_INT);
            $stmt->bindValue(':attenddate', $attenddate, PDO::PARAM_STR);
            $stmt->execute();
            $result = $stmt->fetchAll();
            foreach($result as $row ) {
                array_push($ret, ['id' => $row[0], 'gdate' => $row[2]]);
            }
        }
        echo json_encode($ret);
        exit();
    } catch (PDOException $ex){
            mail_error($ex);
    }
}

返回 JQuery 后,alert(re); 显示我成功创建了数组。

success:function(re){
    alert(re);

enter image description here

但我在访问数组数据时遇到问题。没有成功,这就是我尝试过的:

data = $.parseJSON(re);

$.each(data, function(i, val) {
    alert(i + "=" + val);
});

还有这个:

data = $.parseJSON(re);

$.each(data, function(i, val) {
    if(i == "id"){
        alert(i + "=" + val);
    }
    if(i == "gdate"){
        alert(i + "=" + val);
    }
});

我也尝试过点表示法

$.each(re.id, function(i, val) {
    alert(i + "=" + val);
    }
});
$.each(re.gdate, function(i, val) {                             
    alert(i + "=" + val);                               
});

我以前从未使用过 JSON,也不明白为什么我无法检索数组数据。任何帮助将不胜感激。谢谢。

最佳答案

以下代码检查 re 是字符串还是对象。后者是可能的,如果 jQuery.ajax()方法与“json”dataType 一起使用。此外,如果响应 MIME 类型为 application/json (Content-Type HTTP header ),jQuery 能够自动解析 JSON。因此,最好检查 re 是否已被 jQuery 解析。

var d = typeof re === 'string' ? JSON.parse(re)  : re;
var i;

for (i = 0; i < d.length; i++) {
  console.log("id = ", d[i].id,
              "gdate = ", d[i].gdate);
}

我建议从 PHP 返回适当的内容类型:

    header ('Content-Type: application/json');
    echo json_encode($ret);
    exit();

关于javascript - 如何使用 JQuery 获取 PHP 数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125433/

相关文章:

php - 使用 GET 获取正确的 URL

php - 如何从标签中获取值

javascript - jQuery this.data-x 不工作

javascript - 使用 React Helmet 显示标题

javascript - querySelector,通配符元素匹配?

php - 将 XAMPP 中的 phpMyAdmin 与 Laravel 项目连接

ruby-on-rails - 使用 AJAX 更新部分 View

Javascript/jQuery 文本幻灯片

javascript - 如何将值传递给 JavaScript 中的另一个函数?

javascript - 带有递归 Ajax 的 Jquery Promise