2017-10-06 88 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

好吧,如果您将标签作为对象,我的解决方案应该完美运行。但是再次哪个答案最适合你。如果你可以粘贴我的实现,我很乐意帮助你,看看错误在哪里。谢谢你的回放。 –