簡體   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