javascript - 如何将 json_encode 返回的对象转换为 javascript 变量

标签 javascript php jquery json

我正在向 ajax 调用返回一个 json_encode 对象。首先,有没有更好的方法来做到这一点?需要这个 json_encode 吗?

我的问题的根源。当我试图让键成为一个变量时,它会抛出一个“未定义的错误”。这一行:var displayTriggers = trigger_rows;

有人看到我做错了什么吗?

PHP:

try {
    $con = getConfig('pdo');
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql_triggers = "
        SELECT *
        FROM triggers
    ";
    $triggers_stmt = $con->prepare($sql_triggers);
    $triggers_stmt->execute();
    $triggers_rows = $triggers_stmt->fetchAll(PDO::FETCH_ASSOC);
    $triggers_arr = array();
    foreach ($triggers_rows as $triggers_row) {
        $trigger_id = $triggers_row['id'];
        $trigger_title = $triggers_row['trigger_name'];
        $trigger_setting = $triggers_row['setting'];
        $trigger_user = $triggers_row['user_id'];
        $trigger_placement = $triggers_row['placement'];
        $trigger_date = $triggers_row['date_changed'];
        $trigger_active = ( $trigger_setting == '1' ) ? ' active' : '';
        $html = '';
        $html .= '<div class="triggerRow" data-placement="'.$trigger_placement.'">';
        $html .= '<div class="triggerRowLeft">';
        $html .= '<div class="triggerTitle">' . $trigger_title . '</div>';
        $html .= '<div class="triggerText">' . $trigger_date . '</div>';
        $html .= '<div class="triggerText">' . $trigger_user . '</div>';
        $html .= '</div>';
        $html .= '<div class="triggerRowRight">';
        $html .= '<div class="triggerButton' . $trigger_active . '"></div>';
        $html .= '</div>';
        $html .= '</div>';
        $data = array('html' => $html);
        $triggers_arr[] = $data;
    }
    echo json_encode(['trigger_rows' => $triggers_arr]);
}
catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

JS:

$wrapper = $('#triggerCont');
$.ajax({
    url: 'php/triggerSelect.php',
    dataType: 'json',
    success: function (data) {
      //console.log(data);
        if (data == null) {
            alert("Unable to retrieve triggers!");
            alert(data);
        } else {
            var displayTriggers = trigger_rows;
            $wrapper.empty();
            $(displayTriggers).each(function() {
                $wrapper.append(this.html);
                //console.log(this.html);
            });
        }
    },
    error: function (xhr, textStatus, errorThrown) {
        alert(textStatus + " | " + errorThrown);
        alert('There are currently no project images for this selection');
    }
});

最佳答案

var displayTriggers = data.trigger_rows;

应该可以解决问题

关于javascript - 如何将 json_encode 返回的对象转换为 javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197636/

相关文章:

Javascript - 使用 anchor 标记从外部链接显示隐藏的div

php file_put_contents ...我不能在开头追加吗?

c# - 如何从外部脚本调用 HTML 中的 JavaScript 函数

javascript - 将样式应用于在 Polymer 中使用 InnerHTML 插入的元素

javascript - 通过 id 获取 fullcalendar fc-event div

php - Doctrine 不跟踪实体中某些字段的更改

PHP array_search 不工作

javascript - 获取单击按钮的值/属性作为 event.data,带有 .on ("click"...)

jquery - jquery下拉菜单的无限高度(slideUp和slideDown)

javascript - MobX - 检索可观察数组对象的索引?