javascript - Function "overruns"执行期间的if-else语句

标签 javascript jquery post if-statement asynchronous

我有以下功能:

function updateChatRoom() {
$.post('php/api.php', {"function":"getActiveChat"}, function(jsData) {
    var chatID = jsData.id;
    if (chatID == 0) {
        alert('no active chat!');
    }
    else {
        $.post('php/api.php', {"function":"updateChatRoom", "chatID":chatID}, function(jsData) {
            $('#chatRoom').empty();
            length = jsData.length;
            for (i=0; i<length; i++) {
                $('#chatRoom').append('\
                    <div class="fe-message-wrap">\
                        <div class="fe-message-name">'+ jsData[i].name + ':</div>\
                        <div class="fe-message-text">'+ jsData[i].message +'</div>\
                    </div>\
                ').fadeIn('250');
            }
            $('#chatRoom').scrollTop($('#chatRoom')[0].scrollHeight).animate('500');
            $('#chatMessage').focus();
        });
    }
});

}

执行此函数时,应首先检查是否存在事件聊天。这是通过 API 调用“getActiveChat”进行测试的。 如果没有事件的聊天室,则返回 0。 我的问题是,即使返回 0 ind chatID,它也会忽略整个 if-else 语句并直接跳转到下一个 $.post() 函数...????怎么样? 我不明白,这是怎么回事?

有什么提示吗?

最佳答案

检查chatID是否是一个字符串。在 JavaScript 中 0 == false"0"== true

<小时/>

既然您提到了 chatID 的值未定义,那么您已经找到了原因。因为在 javascript 中,undefined != 0

检查jsData是什么。如果它是一个字符串,那么您需要执行 JSON.parse() 将其转换为对象。

关于javascript - Function "overruns"执行期间的if-else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20389315/

相关文章:

类似于Matlab的convhulln的Javascript 3D凸包算法

javascript - AngularJS 应用程序模板中的 JS 插件不起作用

php - 在加密的 SSL 连接上使用 HTTP POST 发送信用卡信息是否足够安全?

http - VBA/Corel 绘图 : How to send binary and text file in HTTP POST request to server from VBA/VB6 script running from Corel Draw 12/X4?

javascript - 为什么我的 HTML 中嵌入的用于随机化列表的 JavaScript 不起作用?

javascript - 部分 xml 文件到 javascript 数组

javascript - Ajax 追加结果并制作动画

javascript - 使用 jquery 滚动太长的文本

jquery - 选择第一个下拉菜单并聚焦

java - HttpURLConnection 即使在 setDoOutput(true)、setRequestMethod ("POST") setRequestProperty("Content