Javascript console.log不打印响应
我有一个函数,该函数通过服务器调用另一个函数,并返回一个字符串,我希望在浏览器的日志窗口中打印该字符串,该函数如下所示:Javascript console.log不打印响应,javascript,jquery,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 4,我有一个函数,该函数通过服务器调用另一个函数,并返回一个字符串,我希望在浏览器的日志窗口中打印该字符串,该函数如下所示: function getErrorInfo() { setTimeout(function () { $.getJSON('Get/ErrorInfo', function (responseText) { console.log("Log: "+responseText); }); }, 5000);
function getErrorInfo() {
setTimeout(function () {
$.getJSON('Get/ErrorInfo', function (responseText) {
console.log("Log: "+responseText);
});
}, 5000);
}
getErrorInfo();
服务器端的函数确实会命中并返回有效字符串,但浏览器窗口中没有显示任何内容。此外,服务器端的函数必须每5秒命中一次。但这只会让他准时,不会再迟到了
请解释我在这里做错了什么。您的基本问题是需要正确格式化JSON才能返回任何结果。您的结果(根据上文)是: 这不仅是一个异常文本,而且它不是有效的JSON。JSON格式完全相同。与其调用真正的服务,我建议从服务器获取一个静态JSON文件开始。那么你就知道数据是正确的了 旁注: 这里的另一个问题是如何从
getJSON
打印对象结果。当您尝试使用“Console.log”打印对象时,它会将其转换为字符串,而字符串可能不会显示您想要的内容。您可能应该将日志语句更改为:
console.log(responseText);
至少在chrome中,控制台窗口可以让您浏览对象的内容,这非常有用。在上面的注释和解决方案之间,我认为你应该拥有它。祝你好运 使用$.getJSON()
时,返回结果必须是有效的JSON
字符串,这意味着它需要可解析为对象或数组。在这种情况下,您可能只需使用将自动检测返回数据类型的$.get()
,或者如果您想跳过JSON要求,可以使用$.ajax()
并设置数据类型:plain
关于保持日志运行的第二个问题,您可以从setTimeout()
或回调内部调用getErrorInfo()
,它将保持运行:
function getErrorInfo() {
setTimeout(function () {
$.getJSON('/echo/json/', function (responseText) {
console.log("Log: "+responseText);
getErrorInfo();
});
}, 5000);
}
getErrorInfo();
在我看来,在这种情况下,它比
setInterval()
要好,因为这样可以备份并最终覆盖调用,并且错误可能会显示得不正常。请求的网络检查器怎么说?您需要检查控制台中的“网络”选项卡,和/或在脚本中设置断点以检查responseText
是什么。它只被击中一次,因为您似乎只调用它一次(为什么它会再次运行?)。您可以改为setInterval()
,但我更喜欢再次调用setTimeout()
(在这里,您只需在console.log
调用之后再次调用getErrorInfo()
)。再次调用setTimeout
可以防止调用堆积。@Adrian Preuß:它说状态:200 OK
@Jared Farrish:理解setTimeout
的事情,但主要问题仍然存在,没有打印任何内容。如果这是您的响应(不是JSON?),那可能是您的问题。它需要是JSON格式的响应,$.getJSON()
才能工作。您可以使用一个普通的$.get()
。我想您可能会把我的JSFIDLE与OPsresponseText
混淆了,后者是一个文本字符串(请参阅到目前为止的倒数第二条注释)console.log('log:',responseText)
也可以工作(注意,
而不是串联)。@JaredFarrish你是对的!我刷新了,没有注意到OP没有发布链接。问题只是格式不好的JSON。我将修改我的结果。
function getErrorInfo() {
setTimeout(function () {
$.getJSON('/echo/json/', function (responseText) {
console.log("Log: "+responseText);
getErrorInfo();
});
}, 5000);
}
getErrorInfo();