2010-08-01 4 views
1

Я получил этот код, который продолжает возвращать неопределенные msg вместо ожидаемого html. Назначение функции: Целью следующей функции является возврат уведомлений вдаль, аналогично fb one. код работает нормально. но что-то не так с частью getJSON, которую я не мог понять. поэтому вместо того, чтобы возвращать «clonex1 нравится ваше сообщение», я получаю undefined. коднеопределенная ошибка при переходе по списку json

function buzzme() 
{ 
jQuery('#cnumber').removeClass(); 
jQuery('#cnumber').empty(); 

jQuery('#floating_box').toggle(); 

var nHeader = '<div id="floating_box" class="fb">' + 
'<div id="header"><span id="htext">Notifications</span></div>' + 
'<div id="int">' + 
'<div id="bodyx">' + 
'<ul>'; 
var nFooter = '</ul>' + 
'<div class="jfooter">' + 
'<a href="#" id="seemore">See all notifications</a>' + 
'</div>' + 
'</div>' + 
'</div>' + 
'</div>'; 
var nContent; 

jQuery.getJSON('notifications.php', {'n':1,'dht':3692}, function(response){ 
    jQuery.each(response, function(i, nt2){ 
     nContent += '<a href="#"><li id="lix">sdfsdfsd'+nt2.img+' '+nt2.notifier+'</li></a>'; 

    }) 

}); 

alert(nContent); 
var nFinal = nHeader+nContent+nFooter; 
if (!jQuery('#floating_box').length) { 
    jQuery('body').append(nFinal); 
} 
} 

notifications.php - setUpFlayout(); и setUpJSONList()

function setUpFlyout() { 
    $notify = new se_notify(); 
    $data2 = $notify->notify_summary(); 
    $trk = 0; 

    if($data2['total'] >= 1) { 
    for($i = 0; $ $i <= $data2['total']; $i++) { 
$nid = $data2['notifys'][$i]['notify_id']; 
$im = $data2['notifys'][$i]['notify_icon']; 
$img = "<img src='./images/icons/$im' />"; 
$notifier = $data2['notifys'][$i]['notify_text'][0]; 
$atype = $data2['notifys'][$i]['notifytype_id']; 
$url = ''; 
$url2 = $data2['notifys'][$i]['notify_url']; 
if($atype == 1) { 
    $url = ' has sent you friend <a href='.$url2.'>request</a>'; 
} 
$trk++;  
if($data2['total'] >= 2) { 
    $ret_arr = ''; 
    if($i == 0) { 
     $ret_arr = '['; 
    } 
    $ret_arr = $ret_arr.setUpJSONList($data2['total'], $nid, $img, $notifier, $url, $trk); 
    if($i == $data2['total']-1) { 
     $ret_arr = $ret_arr.']'; 
    } 
    echo ''; 
} else if($data2['total'] == 1){ 
    //$ret_arr = '[{"dh3":"'.$data2['total'].'","nid":"'.$nid.'", "img":"'.$img.'","notifier":"'.$notifier.'","url":"'.$url.'"}]'; 
    $ret_arr = ''; 
    echo $ret_arr; 
} 
    if($i == ($data2['total']-1)) 
     break; 
     } 
    } 
} 

комплектUpJSONList();

function setUpJSONList($total, $nid, $img, $notifier, $url, $track) { 
    $comma = ','; 
    $lp = ''; 
    $rp = ']'; 
    $result = ''; 
    if($track == $total) { 
    $result = '{"pos":"'.$track.'","dh3":"'.$total.'","nid":"'.$nid.'","img":"'.$img.'","notifier":"'.$notifier.'", "url":"'.$url.'"}'; 
    } else { 
     $result = '{"pos":"'.$track.'","dh3":"'.$total.'","nid":"'.$nid.'","img":"'.$img.'","notifier":"'.$notifier.'", "url":"'.$url.'"},';  
    } 
    return $result; 
} 

благодаря

+0

вы можете вставить код notifications.php? – Chris

+0

Я отредактировал сообщение, в том числе функции, связанные setUpJSONList() и setUpFlayout() – clonex1

+0

Выход json проверен на результат JSONlint. что-то не так на стороне js, что я не мог понять это – clonex1

ответ

3

Ваше использование nContent после getJSON может быть неопределенным, поскольку getJSON является асинхронным и не будет завершена инициализация nContent. Вам нужно переместить код с помощью nContent внутри обратного вызова getJSON.

jQuery.getJSON('notifications.php', {'n':1,'dht':3692}, function(response){ 
    jQuery.each(response, function(i, nt2){ 
     nContent += '<a href="#"><li id="lix">sdfsdfsd'+nt2.img+' '+nt2.notifier+'</li></a>'; 

    }) 
    alert(nContent); 
var nFinal = nHeader+nContent+nFooter; 
if (!jQuery('#floating_box').length) { 
    jQuery('body').append(nFinal); 
} 
}); 
+1

+1 - Это правильно, это не «может быть», это гарантировано не определено в той точке, в которой он используется (однопотоковая и такая). –

+0

извините за этот вид неясный. можете ли вы продемонстрировать это в фрагменте? – clonex1

+0

@ clonex1 - Обновлен с кодом –

Смежные вопросы