çağırır. Diğer AJAX çağrılarımın uzun ankete yanıt alıncaya kadar (yanıt veya zaman aşımından) tamamlanmadığı anlaşılıyor. Javascript'i adım attığımda, 2. AJAX isteğinin doğru zamanda gönderildiği anlaşılıyor, ancak uzun yoklama isteği yanıt alıncaya kadar yanıt alınmıyor. Neler olup bittiği hakkında bir fikrin var mı?Uzun yoklama ben istemciye aşağı uzun yoklama için "itme" bazı veriler vermek istiyorum ve ben de diğer alakasız AJAX uzun yoklama paralel olarak sunucuya çağrıları yapıyorum
Sunucu tarafı::
function getPlaylistTracksIfChanged($playlist_id, $numClientTracks) {
$reportChange = false;
for($i = 0; $i < 10; $i++) {
$numServerTracks = $this->PlaylistTrack->find('count', array(
'conditions' => array('playlist_id' => $playlist_id)
)
);
if($numClientTracks != $numServerTracks) {
$reportChange = true;
break;
}
sleep(3);
}
if($reportChange) {
$playlist_tracks = $this->PlaylistTrack->find('all', array(
'conditions' => array('playlist_id' => $playlist_id),
'order' => array('PlaylistTrack.position')
)
);
$this->set('playlist_tracks', $playlist_tracks);
$this->layout = false;
$this->render('show_playlist_tracks_list');
} else {
$this->autoRender = false;
return 'false';
}
}
İstemci tarafı:
function checkForChangesOnServer() {
$.post('/getResultsIfChanged/' + playlist_id + '/' + $('#sortable_tracks').children().size(), function(results) {
if(results == 'false') {
//alert('no change');
} else {
//alert('change');
}
checkForPlaylistChangesOnServer();
});
}
Ve başka AJAX arama örnek:
İşte
uzun yoklama kısmı için koddur Sunucu tarafı:function getLibraryTracksStartingWithLetter($user_id, $letter) {
$results = $this->Track->find(
'all',
array(
'conditions' => array(
'user_id' => $user_id,
'OR' => array(
'Track.artist LIKE' => $letter . '%',
'Track.name LIKE' => $letter . '%'
)
),
'order' => array('case when Track.artist = "" then 1 else 0 end', 'Track.artist', 'Track.name')
)
);
$this->set('results', $results);
$this->layout = false;
$this->render('show_library_results_list');
}
İstemci tarafı: Eğer oturum dosya kilidini deneyimli gibi
function loadLibraryResultsForLetter(letter) {
highlightLetterFilter(letter);
$.post('/getLibraryTracksStartingWithLetter/' + user_id + '/' + letter, function(results) {
updateLibraryResults(results);
});
}
kullanıcı
session_write_close();
bu konuda güzel şeyler – RageZ@RageZ bilmiyordum: Her php geliştirici – zerkms
yapmak anlamda :-) bu sorunu yakalamak gerektiğini şimdi bunu çalıştı – RageZ