2017-10-06 97 views
-1

我知道這聽起來很愚蠢,但我無法將文本顯示爲文本。 代碼很簡單 - 從OneSignal如何在jQuery中將文本顯示爲JSON對象

OneSignal.push(["getTags", function(tags) { 
    console.log(tags); 

}]); 


$(function() { 
    var old = console.log; 
    var logger = document.getElementById('test1212'); 
    console.log = function() { 
    for (var i = 0; i < arguments.length; i++) { 
     if (typeof arguments[i] == 'object') { 
     logger.innerHTML += (JSON && JSON.stringify ? JSON.stringify(arguments[i], undefined, 2) : arguments[i]) + '<br />'; 
     } else { 
     logger.innerHTML += arguments[i] + '<br />'; 
     } 
    } 
    } 
})(); 

此代碼獲取標籤和說明標籤到瀏覽器控制檯。這返回類似於 - { "Job": "1", "key": "value", "News": "1", "Deals": "1", "Posts": "1", "Casting": "1", "Directory": "1", "example_on": "1" }到瀏覽器控制檯。該代碼還從瀏覽器控制檯獲取返回文本,並將其顯示在div#test1212中。我希望標籤直接顯示到div#test1212中,而不是從控制檯中顯示。我試過$('#test1212').html(tags);,$('#test1212').text(tags);,var logger = document.getElementById('test1212'); logger.text(tags); 但這些似乎都沒有工作。我怎樣才能以我想要實現的方式實現它。

編輯: 我提供的代碼示例是完美的。但我不想這樣。我不想顯示瀏覽器控制檯中的內容。我想刪除console.log(標籤),並將其替換爲將標籤直接顯示到div#test1212

謝謝。

+0

什麼樣的對象標籤是?我認爲這不是一個字符串? – Walk

+0

@Walk我不確定。我剛開始學習jQuery。我提供的代碼示例,我從這裏獲取 - https://documentation.onesignal.com/v3.0/docs/web-push-sdk#section--tagsreceivedcallback-如果您好好看一看,我想你會理解。他們的網站說 - 「從OneSignal服務器檢索的鍵值對的JSON對象。」 –

+1

這不是一個請爲我做的網站。 問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非現場資源,因爲它們傾向於吸引自以爲是的答案和垃圾郵件,所以不適合堆棧溢出。相反,請描述問題以及到目前爲止解決問題所做的工作。 –

回答

1

也許你可以嘗試這樣的事情(你不需要jQuery)。

var logTags = (function() { 
    var logger = document.getElementById('test1212'); 
    return function (tags) { 
     logger.innerHTML += (JSON && JSON.stringify ? JSON.stringify(tags, undefined, 2) : tags) + '<br />'; 
    } 
})(); 

OneSignal.push(["getTags", function(tags) { 
    logTags(tags); 
}]); 

這裏我們定義了一個新的日誌函數,我們可以調用它。它只是用新內容更新div。

你可以用一些測試它像logTags({ test1: 4, test2: 5, test3: 6 });

編輯:更新,以匹配數據類型

+0

謝謝你!救了我!我正在嘗試學習jQuery,但仍處於「noob」狀態。希望在不久的將來,我可以自己編寫這些類型的代碼。 –

2

那麼我假設標籤多於一個,因此你不能用html的()爲它。如果你這樣做,它會返回對象或某種錯誤。我建議你使用循環和jQuery .append()。

var keys = Object.keys(tags); 
for(var i = 0; i < keys .length; i++){ 
    $('#test1212').append(tags[keys[i]]); 
} 

這應該工作,如果我理解正確。

+0

感謝您的回覆,但我無法完成工作。 user5973519的解決方案爲我工作。 –

+0

好吧,如果您將標籤作爲對象,我的解決方案應該完美運行。但是再次哪個答案最適合你。如果你可以粘貼我的實現,我很樂意幫助你,看看錯誤在哪裏。謝謝你的回放。 –