【问题标题】:Function call within ajax success isn't workingajax成功中的函数调用不起作用
【发布时间】:2018-06-21 02:01:58
【问题描述】:

我在 ajax 的成功函数中有一个函数调用。问题是我没有得到任何迹象表明实际上正在调用外部函数。我什至向它添加了一个警报,以确保它没有被正确调用。我对 html 和 ajax 还很陌生,因此非常感谢任何帮助。

AJAX 功能:

  <script>
$(function() {
    $('.update_btn').click(function() {
        var $row = $(this).closest("tr"),
        $tds = $row.find("td:nth-child(1)");
        var file_name = $tds.text()
        $row.remove()
        $.ajax({
            url: '/database',
            data: {f : file_name},
            type: 'POST',
            success: function(msg) {
               newRow(msg);
            }
        });

    });
});

  </script>

外部函数:

<script>
    function newRow(msg) {
        alert(msg.status)
        switch (msg.status) {
            case 'Safe':
                 var tr = '<tr class="c_table">' +
                 '<td>' + msg.file_name + '</td>' : '<td>' + msg.status + '</td>' : '<td>' + msg.time + '</td></tr>';
                 $('#c_table').append(tr);
                 break;
            case 'Threat':
                 var tr = '<tr class="c_table">' +
                 '<td>' + msg.file_name + '</td>' : '<td>' + msg.status + '</td>' : '<td>' + msg.time + '</td></tr>';
                 $('#c_table').append(tr);
                 break;
            case 'Queued':
                 var tr = '<tr class="p_table">' +
                 '<td>' + msg.file_name + '</td>' : '<td>' + msg.status + '</td>' : '<td>' + msg.time + '</td></tr>';
                 $('#p_table').append(tr);
                 break;
        }
    }
  </script>

【问题讨论】:

  • 您在 ajax 调用中的状态是否为 200?您可以在浏览器的 javascript 控制台 > 网络选项卡中进行检查。
  • 这是打开浏览器调试工具的好时机。有了它们,您可以调试、观察 AJAX HTTP 请求/响应等。调试控制台上是否有任何错误?是否发出了 AJAX 请求?服务器的响应是什么? (注意:如果响应是错误代码,那么您的 AJAX 代码没有错误处理程序。)如果服务器返回您期望的内容,请在您的 success 处理程序中放置一个调试断点。 msg 中有什么内容?函数被调用了吗?会发生什么?
  • @Kumar 是的,我的状态是 200。
  • 我在成功函数中添加了一个警报,并确认我在 msg 中得到了适当的响应
  • @EdselNorwood:所以函数 is 被调用并且值 does 包含您所期望的吗?那么……有什么问题?

标签: html ajax html-table


【解决方案1】:

问题是外部函数中的语法错误。在开关情况下设置var tr 时,有一个: 应该是+。我不是真的发生这种情况。

固定代码:

  <script>
    function newRow(msg) {
        alert(msg.status)
        switch (msg.status) {
            case 'Safe':
                 var tr = '<tr class="c_table">' + '<td>' + msg.file_name + '</td>' + '<td>' + msg.status + '</td>' + '<td>' + msg.time + '</td></tr>';
                 $('#c_table').append(tr);
                 break;
            case 'Threat':
                 var tr = '<tr class="c_table">' + '<td>' + msg.file_name + '</td>' + '<td>' + msg.status + '</td>' + '<td>' + msg.time + '</td></tr>';
                 $('#c_table').append(tr);
                 break;
            case 'Queued':
                 var tr = '<tr class="p_table">' + '<td>' + msg.file_name + '</td>'  + '<td>' + msg.status + '</td>' + '<td>' + msg.time + '</td></tr>';
                 $('#p_table').append(tr);
                 break;
        }
    }
  </script>  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 2017-06-11
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多