繁体   English   中英

console.log不打印响应

[英]console.log not printing the response

我有一个函数,它通过服务器调用另一个函数,并返回一个要在浏览器的日志窗口中打印的字符串,该函数看起来像:

function getErrorInfo() {
    setTimeout(function () {
        $.getJSON('Get/ErrorInfo', function (responseText) {
            console.log("Log: "+responseText);
        });
    }, 5000);
}
getErrorInfo();

服务器端的函数确实会命中并返回有效的字符串,但浏览器的窗口中未显示任何内容。此外,服务器端的函数每5秒必须命中一次。 但这只会让他准时,而不会再次。

请在这里解释我做错了什么。

您的基本问题是,您需要正确格式化JSON才能获取任何结果。 您的结果(上述)为:

3/8/2014 5:27:16 PMSystem.NullReferenceException: Object reference not set to an instance of an object. at movie.Models.Genre.GetPosts(Int32 min)

这不仅是异常文本,而且不是有效的JSON。 JSON格式在此处有完整描述 建议不要从服务器获取静态JSON文件,而应该调用真实的服务。 然后,您知道数据是正确的。

旁注:这里的另一个问题是如何从getJSON打印OBJECT结果。 当您尝试使用“ Console.log”打印对象时,会将其转换为字符串,这可能不会显示您想要的内容。 您可能应该将日志语句更改为:

console.log(responseText);

至少在chrome中,控制台窗口将让您浏览对象的内容,这可能会很有帮助。 在笔记和上面的解决方案之间,我认为您应该拥有它。 祝你好运!

使用$.getJSON() ,返回结果必须是有效的JSON字符串,这意味着它必须可解析为对象或数组。 在这种情况下,您可以简单地使用$.get() ,它将自动检测返回数据类型,或者使用$.ajax()并设置dataType: plain如果您想跳过JSON要求。

关于保持日志运行的第二个问题,您可以从setTimeout()或回调内部调用getErrorInfo() ,它将继续运行:

function getErrorInfo() {
    setTimeout(function () {
        $.getJSON('/echo/json/', function (responseText) {
            console.log("Log: "+responseText);

            getErrorInfo();
        });
    }, 5000);
}
getErrorInfo();

http://jsfiddle.net/Er5Lg/

在我看来,在这种情况下,它比setInterval()更好,因为它可以备份并最终导致覆盖调用,并且错误可能会乱序显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM