내가 장고에 다음 뷰장고 simpleJSON jQuery.parseJSON 잘못된 라벨
def playingNow(request,playlist_id):
from django.db import connection
cursor = connection.cursor()
sql = "SELECT id, timestamp, song_played_id, playlist_from_id, now() - timestamp as timepassed FROM music_song_played \n"\
"WHERE playlist_from_id = %s \n"\
"ORDER by timepassed ASC \n"\
"LIMIT 1;"
cursor.execute(sql,[playlist_id])
data = cursor.fetchall()
songPlaying = get_object_or_404(song, id = data[0][2])
playing = {}
playing["song"] = unicode(songPlaying)
playing["licensed"] = "Licensed by "
return HttpResponse(simplejson.dumps(playing), content_type ="application/javascript; charset=utf8")
다음과 같은 템플릿
{% block content %}
<script type='text/javascript' src='/media/inthebackground-utils.js'></script>
<script type='text/javascript' src='/media/jwplayer/swfobject.js'></script>
<script type='text/javascript' src='/media/jwplayer/jwplayer.min.js'></script>
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.pack.js'></script>
<script type='text/javascript' src='/media/jquery.periodicalupdater.js'></script>
<script type="text/javascript">
var data = new Object();
</script>
<div id="StationName">Your Listening to: {{ station.name }} </div>
<div id="playingNow-{{ station.name }}"></div>
<div id='padder{{ station.name }}' style="height:20px; float left"></div>
<div id='mediaspace-{{ station.name }}'"><p> You dont have adobe flash player installed. Please download and install from <a href="http://get.adobe.com/flashplayer">here</a> </div>
<script type="text/javascript">
data.{{ station.name }} = {'userid':'{{ user.pk }}', 'playlist' : '{{ station.pk }}'};
$.PeriodicalUpdater('/music/playingNow/{{ station.pk }}/',
{method: 'get'},
function(remoteData, success, xhr, handle)
{
jQuery.parseJSON(remoteData);
console.log(typeof(remoteData));
console.log(remoteData);
licenceDiv = '<div id="licence">'+remoteData.license +'</div>';
songDiv = '<div id="licence">'+remoteData.song +'</div>';
contDiv = '<div id="playingNow-{{ station.name }}">' + songDiv + licenceDiv +'</div>';
$('#playingNow-{{ station.name }}').replaceWith(contDiv);
jwplayer('mediaspace-{{ station.name }}').play(true);
});
jwplayer('mediaspace-{{ station.name }}').setup({
flashplayer: "/media/jwplayer/player.swf",
file: "{{ station.url }}?{{ cacheBuster }}",
height: 20,
width: 300,
controlbar: "bottom",
provider: "sound",
duration: "0",
events: {
onPlay: function(event){play(data.{{ station.name }});},
onPause: function(event){pause(data.{{ station.name }});}
}
});
$(window).unload(function() { pause(data.{{ station.name }}); });
</script>
{% endblock %}
이 때 periodicalUpdater 화재와 GET, 그것은으로 JSON을 얻는다 않습니다 view 함수에서 문자열을 얻을 수 있습니다. 즉 일반적인 json 구조처럼 액세스 할 수 있습니다. 그리고 jQuery.parseJSON 파이어 폭스 파이어 버그를하려고 할 때 "잘못된 라벨"오류가 발생합니다. jquery가 JSON 대신 JSONP를 기대하고 있기 때문에 이것이 가능한 곳을 몇 군데 읽었습니다. 그러나 이것을 고치는 방법을 모르겠다.
아이디어가 있으십니까?
건배
마크
환호 내가 그것을 확인해 보겠습니다. 부수적으로, 나는 분노로 PeriodicalUpdater를 사용하지 않았지만 지금까지 dev에서 꽤 잘 작동한다. 나는 많은 클라이언트로부터 얼마나 많은 부하가 발생하는지 아직 보지 못했지만 전체적으로 꽤 좋은 구현처럼 보인다. –
는 그것을 줬다, unfortunatly 히 didnt는 문제를 해결한다. 나는 여전히 잘못된 라벨 오류가 발생합니다. –
서버에서 반환 된 데이터는 어떻게 생깁니 까? jsonp를 사용하여, 나는 그것이 유효한 자바 스크립트 객체로 되돌아오고 그것을 파싱 할 필요조차 없다고 생각한다. 비슷한 질문이 스레드를 참조하십시오 : http://stackoverflow.com/questions/3543513/how-to-parse-jsonp-data-returned-from-remote-server – Spike