मुझे यहां एक दुःस्वप्न का थोड़ा सा हिस्सा है, इसलिए किसी भी मदद की सराहना की जाएगी! सबसे पहले, मैं समझाऊंगा कि मैं क्या करने की कोशिश कर रहा हूं:jQuery लंबे मतदान (PHP सर्वर पक्ष के साथ)
मैं यहां वर्णित एक प्रणाली को लागू करने की कोशिश कर रहा हूं: https://stackoverflow.com/a/1086448/1034392 वाईआई फ्रेमवर्क का उपयोग करके मेरे स्थानीयहोस्ट एमएएमपी सर्वर पर। मेरे पास एक ऐसा फ़ंक्शन है जो जांचता है कि डीबी में कोई नई सूचनाएं हैं या नहीं - यदि ऐसा है, तो यह उन्हें पार्स करता है और जेसन उन्हें एन्कोड करता है। मेरे पास यह फ़ंक्शन हर 5 सेकेंड में थोड़ी देर लूप पर बुलाया गया है।
तो: करने के लिए/उपयोगकर्ता/unreadNotifications जा रहा से चलाता निम्नलिखित
Yii::log('test'); // to check it's getting called
$this->layout=false;
header('Content-Type: application/json');
// LONG POLLING
while (Yii::app()->user->getNotifications() == null) {
sleep(5);
}
echo Yii::app()->user->getNotifications(); // prints out json if new notification
Yii::app()->end();
return;
यह ठीक काम करता है - ब्राउज़र में लिंक करने के लिए चला गया और json प्रतिक्रिया सत्यापित - सब अच्छा।
मैंने फिर काम करने के लिए सभी प्रकार की jQuery सामग्री की कोशिश की है ... काम करने के लिए मुझे एकमात्र तरीका $.ajax
का उपयोग पोस्ट के साथ है, लेकिन केवल जब प्रतीक्षा प्रतीक्षा अधिसूचना है (तो कुछ जेसन वापस आ गया है)। $.get
या $.post
"निरस्त" हो जाता है (फ़ायरबग में प्रदर्शित) लेकिन यूआरएल कहा जाता है (क्योंकि मैं लॉग फ़ाइल को अद्यतन कर सकता हूं) - विषम।
मेरी मूल सेटअप $.get
उपयोग कर रहा है:
<script type="text/javascript">
function notificationPoll() {
$.get('<?php echo Yii::app()->createUrl('user/unreadNotifications') ?>','', function(result) {
$.each(result.events, function(events) {
alert('New Notification!');
});
notificationPoll();
}, 'json');
}
</script>
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({
timeout: 60 //set a global ajax timeout of a minute
});
notificationPoll();
});
</script>
यह सिर्फ हो जाता है किसी कारण के लिए "निरस्त किया गया"। मैंने 'jsonp' के साथ प्रयास किया है, भले ही यह एक कोर अनुरोध नहीं है .. लेकिन यह भी काम नहीं करता है।
इस के साथ कहीं भी नहीं मिल रहा है! क्या कोई चिपका सकता है?
बहुत धन्यवाद
उल्लेख करना भूल गया: जब मैं POST प्रकार के साथ $ .ajax का उपयोग करता हूं और प्रदर्शित करने के लिए कोई अधिसूचना नहीं होती है, तो कोई भी साइट पेज जिस पर jQuery कोड है, तब तक लोड नहीं होता है जब तक अधिसूचना नहीं आती है। –
कंसोल लॉग त्रुटि ?? पेस्ट करें .. –