如何区分两个数组上的jquery,从mysql使用编码器获取数据


How to distinguish between two array on jquery that getting data as from mysql using codeigniter

你知道,我真的把jquery和codeigniter搞混了。我创建了一个web应用程序来监视来自用户的请求表单。我有一个视图的html,显示一个表,像这样:

+---------------+--------------------+
| id_request    |  comment_bapak     |
+---------------+--------------------+
|   001         |                    |
|   002         |                    |
|   003         |                    |
+---------------+--------------------+

我想在jquery或javascript中创建一些警报时,列'comment_bapak'被用户插入。所以,我在jquery上使用自动刷新页面。假设,一个用户插入"这是id_request 002的评论",然后,在web上将显示alert("Request 002 has inserted"),表将像这样刷新。

+---------------+---------------------------------+
| id_request    |  comment_bapak                  |
+---------------+---------------------------------+
|   001         |                                 |
|   002         |This is comment of id_request 002|
|   003         |                                 |
+---------------+---------------------------------+

这是我的代码

public function getKomentarMD() {
    $this->db->select('id_request, comment_bapak');
    $query = $this->db->get('tbl_requestfix');
    return $query->result_array();
}
控制器

public function getKomentarMD() {
    $row = $this->model_request->getKomentarMD();
    echo json_encode($row);
}
<<p> 视图/strong>
<td class="sorting1" id='no_request' data-id-reseh="<?php echo $data['id_request']; ?>"><?php echo $data['id_request']; ?></td>
<td class="center" id="tanggap_md"><?php echo $data['jawaban_bapak']; ?> /td>
Jquery

function refreshAkibatCommentMD() {
    var temp[];
    var requestMasuk = $('#tanggap_md').text();
    var audioElement = document.getElementById('notif-md');
    audioElement.addEventListener('ended', function() {
        this.currentTime = 0;
        this.play();
    }, false);
    setTimeout(function() {
        $.ajax({
            url: '<?php echo base_url() . 'control_closing/getKomentarMD/' ?>',
            type: 'POST',
            dataType: 'json',
            success: function(obj) {
                audioElement.play(); //playing tone
                alert(obj.comment_bapak);// debugging
                ?? Please help...
                refreshAkibatCommentMD();
            }
        });
    }, 5000);
}

我有两个问题。

  1. 为什么alert(obj.comment_bapak)给我undefined ?
  2. 我想,我应该在jquery上创建一个新的数组作为临时的,以区分新的数组从自动刷新?

任何帮助和建议,我都很感激。

-----------------------------------------------------------

我有两个页面,第一个是用户表单,第二个是监控页面。两个页面都有相同的表显示。我的意思是,当用户更新表上的一行时,会在行已更新的监视页面上有一个警报通知。所以我使用Jquery/Js来处理这个

我有一个这样的想法。

  1. 当第一次加载监控页面时,从数据库中调用所有id, comment_bapak并保存为第一个数组对象

  2. 在JS/Jquery上自动刷新,使用ajax从数据库中调用所有id, comment_bapak并保存为第二个数组对象。假设用户更新了某一行,就会和第一个数组对象有所不同。

  3. 检查对象上的所有项目。

  4. 查找两个数组之间的差异,当它找到时,它必须是一个警报通知?
  5. 如果成功,将第一个数组对象的值更改为第二个数组对象。

你知道吗?

关于您的第一个问题:console.log(obj)的输出表明您获得了一个对象数组。我没有看到任何关于从数据库中选择特定行的提及,ajax-response包含所有行,而不仅仅是已更改的行。所以我怀疑你的方法是只接收所有的评论。

你可以保留一个带有'current'注释的额外数组(这是你对第二个问题的意思吗?),并将其与json对象进行比较。

在页面中,也创建一个对象(" associatedarray& quot;)在javascript:

var current_comments = {
    1: null,
    2: null.
    3: null
);

包含数据库中的所有id和注释。

然后,在ajax success-function中,执行如下操作:

success: function(obj) {
    var id, comment;
    audioElement.play(); //playing tone
    foreach (item in obj) {
        id = parseInt(item['id_request'], 10);
        comment = item['comment_bapak'];
        if (current_comments[id] !== comment) {
            // the comment changed!
            alert(comment);// debugging
            refreshAkibatCommentMD();
        }
    }
}

<标题> 更新

(更新你的问题)

遵循你的想法:

1:是的。这就是我建议的current_comments对象。好的起点。

2和3:当然可以将ajax结果存储在单独的对象中,但这也是您从ajax调用中获得的结果。因此,只遍历从ajax调用获得的对象更容易(并且使用更少的资源)。对于列表中的每个项目,检查它是否等于"旧的";的情况。如果没有:alert.

4:是的,你当然需要将新结果存储到第一个对象(current_comments)中。

所以,基本上,你的建议已经在我的答案中了。我不确定refreshAkibatCommentMD()函数是做什么的,但是如果你为它提供idcomment(在循环中),那么这个函数可以更新current_comments对象。

success: function(obj) {
    var id, comment;
    audioElement.play(); //playing tone
    foreach (item in obj) {
        id = parseInt(item['id_request'], 10);
        comment = item['comment_bapak'];
        if (current_comments[id] !== comment) {
            // the comment changed!
            alert(comment);// debugging
            refreshAkibatCommentMD(id, comment);
        }
    }
}
function refreshAkibatCommentMD(id, comment) {
    // some logic to update the comment for row with id
}

小提示:你可能需要读一点关于javascript中数组和对象之间的区别。数组不能是"关联的";在这种情况下,它将永远是一个对象!