PDA

View Full Version : سوال: لوپ در آژاکس جی کوئری



parsbin
پنج شنبه 18 آذر 1389, 09:49 صبح
سلام
یک سری اطلاعات رو با جی کوئری برای یک صفحه باید بفرستم و جواب رو هم دریافت کنم و نمایش بدم.
مشکل اینه که صفحه ای که جواب رو تحویل میده امکان داره با یک تاخیر این کار رو بکنه.
چطوری میتونم یک بار اطلاعات رو ارسال کنم برای اون صفحه و بعد یک لوپ ایجاد کنم برای آژاکس جی کوئری تا مثلا هر یک ثانیه جواب اون صفحه رو دریافت کنه و نمایش بده؟


$("#go").click(function () {
var command= document.getElementById("command").value + " > <? echo '/var/www/data/out/'.$file_output_name; ?>";
var file = "<? echo 'data/out/'.$file_output_name; ?>";
$.ajax({
url: 'doer.php',
type:'GET',
data:{command:command,file:file},
success: function(data) {
$('#output').html(data);
}
});
});

mehdi.mousavi
پنج شنبه 18 آذر 1389, 10:41 صبح
سلام.
بطور کلی دو راه حل برای این مشکل وجود داره: Client Pull و Server Push... اولی بدین معناست که شما در Interval های مشخصی درخواستی به سرور ارسال می کنید و پاسخ دریافتی رو پردازش می کنید. دومی بدین معناست که هنگام وقوع یه رخداد سمت سرور، این سرور هستش که Client رو مطلع میکنه و باعث اجرا شدن (یا پیگیری) روندی سمت Client میشه.

اما تو HTML 5 قابلیتی وجود داره تحت عنوان WebSocket API که امکان ایجاد یک کانال Full-Duplex ارتباطی برای شما رو فراهم میکنه. اگر محدودیتی در استفاده از HTML 5 ندارید، می تونید با استفاده از این jQuery Plugin (http://code.google.com/p/jquery-websocket/) (که بر اساس WebSocket API نوشته شده) به هدفتون برسید. در غیر اینصورت باید به Comet Pattern ها رجوع کنید. (برای اطلاعات بیشتر لطفا در گوگل جستجو کنید).

موفق باشید.

پاورقی: برای اطلاعات بیشتر در زمینه WebSocket API، این Slide ها میتونه مفید باشه (http://www.slideshare.net/ffdead/the-html5-websocket-api).