2017-10-06 4 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.onesign.com/.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를 배우려고 노력하고 있지만 여전히 "멍청한 놈"상태입니다. 가까운 장래에 나 혼자서 이러한 유형의 코드를 코딩 할 수 있기를 바랍니다. –

2

잘 나는 둘 이상의 태그를되었다고 가정하고, 따라서 당신은 그것을()가 .html 수 없습니다 . 그렇게하면 객체 또는 어떤 종류의 오류가 반환됩니다. for 루프 및 jQuery .append()를 사용하는 것이 좋습니다.

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

올바르게 이해하면 정상적으로 작동합니다.

+0

답장을 보내 주셔서 감사합니다. user5973519의 해결책이 나를 위해 일했습니다. –

+0

글쎄, 만약 당신이 개체로 태그를 얻을 내 솔루션은 완벽하게 일해야합니다. 그러나 이제까지 당신을 위해 응답은 이제까지 잘 작동합니다. 내 구현을 붙여 넣을 수 있다면, 나는 당신을 도우려고하고 실수가 어디 있는지 보길 원합니다. 종류 재생에 감사드립니다. –