Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript console.log不打印响应_Javascript_Jquery_Asp.net Mvc 4 - Fatal编程技术网

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与OPs
responseText
混淆了,后者是一个文本字符串(请参阅到目前为止的倒数第二条注释)
console.log('log:',responseText)
也可以工作(注意
而不是串联)。@JaredFarrish你是对的!我刷新了,没有注意到OP没有发布链接。问题只是格式不好的JSON。我将修改我的结果。
function getErrorInfo() {
    setTimeout(function () {
        $.getJSON('/echo/json/', function (responseText) {
            console.log("Log: "+responseText);

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