رفتن به مطلب

پست های پیشنهاد شده

اون سایت رفرش می شه

من نگفتم با جی کوئری نیست

با آژاکس جی کوئریه

در مورد آژاکس مطالعه کنید و لینکی که دادم را چک کنید

به این تصویر هم دقت کنید می بینید که داره رفرش انجام می شه روی بروسر خودتون امتحان کنید

post-336-0-33801900-1407654961_thumb.png

به اشتراک گذاری این ارسال


لینک به ارسال

اون سایت رفرش می شه

من نگفتم با جی کوئری نیست

با آژاکس جی کوئریه

در مورد آژاکس مطالعه کنید و لینکی که دادم را چک کنید

به این تصویر هم دقت کنید می بینید که داره رفرش انجام می شه روی بروسر خودتون امتحان کنید

post-336-0-33801900-1407654961_thumb.png

ممنون

غیر از لینکی که دادید ، منبع دیگه ای برای این کار سراغ دارید ؟

به اشتراک گذاری این ارسال


لینک به ارسال

لینکی که دادم ژنراتوریه که خودم نوشتم و می دونم چی کار کردم

http://www.w3schools.com/ajax/default.asp

به اشتراک گذاری این ارسال


لینک به ارسال

لینکی که دادم ژنراتوریه که خودم نوشتم و می دونم چی کار کردم

http://www.w3schools...jax/default.asp

ممنون.

باهاش کار میکنم ، مشکلی بود همینجا مطرح میکنم.

به اشتراک گذاری این ارسال


لینک به ارسال

این آموزش رو هم در سایت داشتم ولی یادم نبود

[sharedmedia=tutorials:tutorials:456]

به اشتراک گذاری این ارسال


لینک به ارسال

این آموزش رو هم در سایت داشتم ولی یادم نبود

چیز زیادی ازش نفهمیدم ، بازم ممنون

به اشتراک گذاری این ارسال


لینک به ارسال

اون سایت رفرش می شه

آقا ایمان به سایت خوب دقت کردم.

خود مدیر این کد رو گذاشته :


$(document).load(function () {
window.setInterval("refresh();", 300000);
});

بعد یه مدت سایت رفرش میشه.

اما قسمتی که خبرهای جدید اضاف میشه ، رفرش نمیشه.

از صفحه inspect element بگیرید و بیاید روی تگ <div class="b">.

کاملا نحوه کار سایت مشخصه.

خبرجدید که اضاف میشه ، background-color نداره و با jquery اضاف میشه.

اگر div رفرش میشد ، باید background-color خبرهای قدیمی تر از بین میرفت.

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

خوب من هم که همین رو عرض کردم

بعد باید با تابع setTimeout صفحه را در یک بازه زمانی مشخص مثلا 1 دقیقه رفرش کنید و در نهایت دستور رفرش را آژاکسی کنید و بهش افکت بدید

موضوع اینه که خبر جدید در اثر رفرش آژاکسی به سایت معرفی می شه و راه دیگه ای هم وجود نداره php سمت سروره و از طرف کاربر قابل تغییر نیست و ارتباط با دیتابیس هم توسط php انجام می شه پس باید برای واکشی اطلاعات جدید از سرور صفحه دوباره بارگذاری بشه

حالا می شه این بارگذاری را با آژاکس انجام داد و با جی کوئری بهش افکت داد

به اشتراک گذاری این ارسال


لینک به ارسال

موضوع اینه که خبر جدید در اثر رفرش آژاکسی به سایت معرفی می شه و راه دیگه ای هم وجود نداره php سمت سروره و از طرف کاربر قابل تغییر نیست و ارتباط با دیتابیس هم توسط php انجام می شه پس باید برای واکشی اطلاعات جدید از سرور صفحه دوباره بارگذاری بشه

حالا می شه این بارگذاری را با آژاکس انجام داد و با جی کوئری بهش افکت داد

خب من تا به حال همچین کاری انجام ندادم ، آشنایی زیادی هم ندارم. برای همین سوال زیاد میپرسم :D

به همچین اسکریپتی برای سایتم خیلی لازم دارم و مهم است.

به اشتراک گذاری این ارسال


لینک به ارسال

در مورد آژاکس مطالعه کنید

اسکریپتهای آژاکسی خیلی زیادند

به اشتراک گذاری این ارسال


لینک به ارسال

در مورد آژاکس مطالعه کنید

اسکریپتهای آژاکسی خیلی زیادند

:)

به اشتراک گذاری این ارسال


لینک به ارسال

سلام مجدد

من از تابع load جی کوئری برای نمایش اخبار به صورت زنده استفاده کردم.

20 تا خبر آخر رو نشون میده.

حالا یه مشکل داره ، اگر 30 تا خبرجدید اضافه شده باشه :

اول این که 10 تاش نشون داده نمیشه.

دوم این که همه خبرها به یه دفعه عوض میشن.

چیکار کنم ، خبرها به صورت تک تک اضافه شوند ؟

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

یا من درست متوجه نشدم یا فکر کنم یه جای کار رو اشتباه رفته باشید

اگر نشانی آنلاین دارید بگذارید

به اشتراک گذاری این ارسال


لینک به ارسال

یا من درست متوجه نشدم یا فکر کنم یه جای کار رو اشتباه رفته باشید

اگر نشانی آنلاین دارید بگذارید

متاسفانه هنوز قالب روی لوکال هست.

اچ تی ام ال :


<ul class="news">
</ul>

جی کوئری :


auto_load = setInterval(function(){
$(".news").load("live.php");
},60000);

فایل php :


$sql = "SELECT * FROM `posts` ORDER BY id desc limit 20";
$query = $this->load->connect->prepare($sql);
$query->execute();
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo '<li>
<figure>
<img src="" width="70" height="70" alt="" title="">
</figure>
<a target="_blank" href="" title=""></a>
<div class="info">
<span class="right"><a target="_self" href=""></a></span>
<time datetime="" class="left"></time>
</div>
</li>';
}

این کد 20 تا خبر اخر رو زنده نشون میده.

1 - اگر 30 تا خبر جدید به یکباره اضاف بشه ، که 100% تا الان چندین بار اتفاق افتاده ، بر اساس کوئری فقط 20 تاش نشون داده میشه. (10 تای دیگه چی میشه ؟) :wacko:

2 - فرض کنید 5 تا خبر جدید اضاف شده ، بعد از این که تابع load فراخوانی شد ، هر 5 تا خبر میاد روی صفحه ، من میخوام تک تک بیاد ، مثل سایتی که داخل تاپیک های پیشین معرفی کردم.

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

اینکه 20 تا خبر رو کوئری می خونه مربوط می شه کوئریتون که تعدادش رو از main_query می گیره که تعداد مطالب صفحه اصلی سایتتونه

و اصلا لازم نبود کوئری بگیرید و آژاکسیش کنید شما می تونستید خود صفحه اصلی سایت را روی خودش آژاکسی رفرش کنید

البته ساختارتون باید اینجوری می شد


<div class="news">
<ul id="newsInner">
...

و


...
$(".news").load("<?php bloginfo('url');?>/#newsInner");
...

وجود آی دی newsInner باعث می شه جی کوئری بدونه کدوم بخش از صفحه را در داخل کلاس news لود کنه

در مورد تعداد اخبار هم آژاکس چیزی رو لود می کنه که در سایت موجوده شما می تونید انتشار در سایت رو با یک تابع زمانبندی کنید تا متناسب با زمان لود یک مطلب به سایت اضافه کنه اما به هیچ وجه این روش ها را برای سایت توصیه نمی کنم مگر اینکه سایت واقعا ساده ای داشته باشید (کمترین استفاده از جاوا اسکریپت و سی اس اس و سرور فوق العاده قوی)

به اشتراک گذاری این ارسال


لینک به ارسال

برای این که فشار به سرور نیاد ، من یک صفحه اختصاصی برای اخبار زنده ساختم ، وگرنه خودم دوست داشتم تمام اخبار روی صفحه اول آژاکسی باشه :D

الان این روشی که شما گفتید ، از کجا میفهمه که کدوم مطالب رو باید لود کنه ؟

چون داخل این قسمت هیچ کوئری از قبل ارسال نمیشه و خبری برای نمایش وجود نداره تا این کد جی کوئری که ارسال کردم اجرا بشه.

آقا ایمان من یک پیشنمایش برای شما میذارم و براتون pv میکنم آدرسشش.

هر وقت تونستید نظرتون داخل pv بگید.

ممنون

به اشتراک گذاری این ارسال


لینک به ارسال

ببینید وقتی شما می خواهید در دایو با کلاس یا آی دی 1 آی دی 2 را اود کنید باید کل کدهای کوئری یا حلقه تون داخل دایو 2 موجود باشند چون آژاکس اون بخش را دوباره فراخوانی می کنه

شما اول باید آژاکس را کنار بگذارید به صورت عادی و معمولی چیزی که می خواهید را بسازید وقتی از اجرای صحیحش مطمئن شدید اونرو آژاکسی کنید

به اشتراک گذاری این ارسال


لینک به ارسال

من با یه برنامه نویس صحبت کردم ، یه راه حل داد.

گفت میشه که با آژاکس به دیتابس وصل شد و مطالب جدید فراخوانی کرد و در یک متغییر ذخیره کرد.

بعدش گفت میشه خبرها رو تک تک به صفحه append کرد.

لازم هم نیست همه خبرها سریع اضافه شوند ، دفعه بعد که به دیتابس وصل شد و خبرها واکشی شد ، بعد از آخرین خبر متغییر قرار بگیره.

میشه همچین کاری کرد ؟ اگر میشه راهنمایی کنید.

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

بله می شه و فکر کنم روش کاریه اغلب سایتهای مشابه همینجوریه

کار خاصی نداره با توجه به اینکه عملا قرار نیست صفحه تغییر کنی می شه نتیجه گرفته شده از دیتابیس را به با مقدار فعلی یک متغیر مثل contents مقایسه کرد و موارد جدید را به متغیر داد در نتیجه مقدار متغیر مثلا از a

b

c

d

می شه

a

b

c

d

e

و از طرف دیگه لیستتون با با settimeOut در سر موعد خودش یکی از انتها کم می کنه و مثلا a را جایگزینش می کنه و از موجودی متغیر حذفش می کنه

من پیشنهادم را قبلا هم خدمتتون عرض کردم بجای اینکه چند کد را به دست آورید در مورد آژاکس از ریشه مطالعه کنید این خیلی مهمه که ابزارتون و کارکردهاش رو بشناسید

به اشتراک گذاری این ارسال


لینک به ارسال

آقا ایمان من از خدامه که آژاکس از پایه شروع کنم ، اما نمیشه ، درس و دانشگاه وقت زیادی برام نمیذاره ، برای همین دنبال چیزهایی که مورد نیازم هست میرم.

فعلا آژاکس خالص با جاوا اسکریپت و جی کوئری هم تابع های fade , animate , slide و (چیزهایی که برای effect هست) ... رسیدم کار کنم.

در مورد این موضوع هم این جوری بهتره ، هم فشار به سرور کم تر میاد ، هم زیباتر میشه کار رو انجام داد.

من یه جستجو کردم داخل سایت های مختلف. به این کد رسیدم. کمی تغییرش دادم.


var status = "play";
var post='';
var auto_load = setInterval(function(){
if(status == "play") {
$.ajax({
type:'post',
url: '/live',
dataType:'text',
success: function(data) {
useReturnData(data);
}
});
}
},5000);
function useReturnData(data){
post = data.split('\n\n');
};

الان خبرها خونده میشن و داخل post ریخته میشه. (اطلاعاتی که خونده میشه 20 تا li هست)

1 - یه مشکلی که داره این که هر دفعه اجرا میشه ، کل مقدار post تغییر میکنه.

2 - بعد من نمیدونم چطوری مقدار post رو تک تک بخونم.

3 - هر خبری که به صفحه اضافه میشه ، باید از post حذف بشه

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

یالاخره بعد یک شب نخوابیدن درستش کردم. :D

ارزششو داشت ، چون چیزی که میخواستم شد. :)

داده ها از دیتابیس به json تبدیل میشن و توسط آژاکس خوانده شده و تک تک خوانده و به صفحه اضاف میشه.

یه مشکل کوچیک داره.

من تاریخ ها رو داخل دیتابیس ذخیره کردم ، یه فانکش دارم که اختلاف زمان رو بدست میاره (درست کار میکنه و تست شده)

خبرها که اضاف میشن ، مثلا اولی مینویسه 6 ثانیه پیش ، بعدی 4 ثانیه پیش و بعدی 2 ثانیه پیش و ...


<ul>
<li>6 ثانیه پیش</li>
<li>4 ثانیه پیش</li>
<li>2 ثانیه پیش</li>
</ul>

اینجوری باید باشه » اولی 2 ثانیه پیش ، دومی 4 ثانیه پیش ، سومی 6 ثانیه پیش ...


<ul>
<li>2 ثانیه پیش</li>
<li>4 ثانیه پیش</li>
<li>6 ثانیه پیش</li>
</ul>

یعنی برعکس نشون میده :D امیدوارم منظورم رو رسونده باشم.

راهی هست درستش کنم ؟

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

یالاخره بعد یک شب نخوابیدن درستش کردم. :D

ارزششو داشت ، چون چیزی که میخواستم شد. :)

داده ها از دیتابیس به json تبدیل میشن و توسط آژاکس خوانده شده و تک تک خوانده و به صفحه اضاف میشه.

یه مشکل کوچیک داره.

من تاریخ ها رو داخل دیتابیس ذخیره کردم ، یه فانکش دارم که اختلاف زمان رو بدست میاره (درست کار میکنه و تست شده)

خبرها که اضاف میشن ، مثلا اولی مینویسه 6 ثانیه پیش ، بعدی 4 ثانیه پیش و بعدی 2 ثانیه پیش و ...


<ul>
<li>6 ثانیه پیش</li>
<li>4 ثانیه پیش</li>
<li>2 ثانیه پیش</li>
</ul>

اینجوری باید باشه » اولی 2 ثانیه پیش ، دومی 4 ثانیه پیش ، سومی 6 ثانیه پیش ...


<ul>
<li>2 ثانیه پیش</li>
<li>4 ثانیه پیش</li>
<li>6 ثانیه پیش</li>
</ul>

یعنی برعکس نشون میده :D امیدوارم منظورم رو رسونده باشم.

راهی هست درستش کنم ؟

توی کوئری که از دیتابیس می‌گیرید order_by رو تغییر بدید.

ویرایش شده توسط Anisi

به اشتراک گذاری این ارسال


لینک به ارسال

توی کوئری که از دیتابیس می‌گیرید order_by رو تغییر بدید.

دوست عزیز ، عرض کردم ، درست نمایش داده میشه اما برعکس.

صعودی یا نزولی بودنش تاثیری نداره.

تاریخ داخل دیتابیس به این شکل هست :

2014-08-27 05:29:38.000000

خبرها که به دیتابیس اضاف میشه ، اختلاف زمانی خیلی کمی دارند (1 ثانیه و 2 ثانیه)

تابعی که گفتم ، زمان ثبت خبر رو نسبت به زمان فعلی محاسبه میکنه و چون خبرها به ترتیب نمایش داده میشه تا برسه به آخرین خبر ، بنابراین زمانش زیاد میشه.

من میخوام اگه میشه برای این قسمت با جی کوئری تاریخ رو نمایش بدم و کاری به تابعی که دارم نداشته باشم.

فکر کنم بد توضیح دادم :D:unsure:

ویرایش شده توسط Ghasem Paran

به اشتراک گذاری این ارسال


لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • مطالب مشابه

    • توسط kamalwp
      سلام 
      دوستان خیلیا میگن که باید برای طراحی قالب وردپرس از نسخه 1.12.4 استفاده کنیم ، این درسته؟ البته من نگاه کردم هرچی سایت وردپرسیه از نسخه 1.12.4 استفاده کردن
      دلیل اینکار چی هست واینکه نمیشه از تسخه بالاتر استفاده کرد
    • توسط jistili1
      سلام دوستان.
      ببینید من یک فرم دارم که فقط دو input داره.یک اینپوت متن و یک اینپوت سابمیت.توی اینپوت متن ، کاربر کد imdb یک فیلم رو میده.بعد فرم من با ajax ارسال میشه.فرض بگیریم مقادیر برای صفحه check.php ارسال بشه.حالا من توی صفحه check.php همچین کدی رو دارم:
      <?php if(isset($_POST["btn"])) { echo file_get_contents("http://mydiba.club/".$_POST["link"]."/"); ?> <script src="jquery-3.4.1.js"></script> <script> $(document).ready(function(){ $(".-dl .Block_dl").each(function(){ var href=$(this).find(".dublboxa:first-of-type").attr("href"); $.ajax({ url:"check2.php", method:"POST", data:"link="+href }); }); }); </script> <?php } ?> اگه به کد دقت کنید ، وقتی کاربر کد imdb یک فیلم رو وارد کرد ، در صفحه check کل محتویات اون فیلم که در یکی از سایت های دانلود فیلم هست echo میشه.بعد در این قسمت یک ajax دیگه هم داریم که خودش توی یک صفحه check هست.کار این قطعه کد ajax که در جی کوئری نوشته شده اینه که تمامی لینک های دانلود اون فیلم رو از سایت دانلود فیلم بگیره و ببره به یک صفحه check دیگر که در اینجا اسمش check2.php هست.خودتون میتونید کد رو ببینید.حالا اینکه توی صفحه check2.php چی هست دیگه مهم نیست.خلاصشو بگم : من اینکارو کردم ولی همونطور که فکرشو میکردم انجام نشد.شما چه راه حلی برای این کار دارید؟در واقع الان با دو تا ajax تو در تو روبرو هستیم.
      یک قسمت از کد من اشکال داره یا در کل غیر استاندارد نوشتم؟اگه میشه یه راه حل بگید که اینکار رو بتونم انجام بدم.دقت کنید که اون قسمت از کد جی کوئری که از متد each استفاده کردم ، برای اینه که به ازای هر لینکی که در صفحه اون فیلم در سایت دانلود وجود دارد ، یک بار این ajax که خودش توی صفحه check یک ajax دیگست رو انجام بده.
      خیلییی خیلییی ممنون میشم اگه کمکم کنید.
      ضمنا از curl هم نمیخوام استفاده کنم
    • توسط SadraHkm
      سلام دوستان
      امیدوارم حالتون خوب باشه
      لطفا یه نگاهی به کد زیر بندازید
      <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> <p>Paragraph 4</p> <button id="calcBtn">Calculate</button> <div id="result"></div> <script> $(window).ready(function () { $('#calcBtn').click(function (e) { $('p').each(function () { $(this).css('color','rgb('+ rand(0,255) +','+ rand(0,255) +','+ rand(0,255) +')'); $('#result').append($(this).html()); // ----------------- This Code : //$('#result').append($(this)); }) }); }) </script> در اون قسمتی از کد که دارم محتوی کدهای پاراگراف رو به تگ div اضافه میکنم یه سوالی ذهن منو مشغول کرده.
      اگر همین کدی که الان هست رو اجرا کنیم، جی کوئری هربار توی حلقه رنگ تگ اصلی رو تغییر میده و یه کپی از اون پاراگراف میگیره و اضافه میکنه به div.
      ولی اگه اون تکه کدی که کامنت هست رو با اون خط جایگزین کنیم، میاد و هر بار کلا تگ پاراگراف رو برمیداره و اضافش میکنه به div. یعنی دیگه کپی ازش نمیگیره و دیگه تگ های p اون بالا باقی نمیموند.
      میخواستم ببینم آیا من درست فهمیدم ؟ یا مشکلی توی کد هست که اینجوری اجرا میشه ؟!
      باتشکر فراوان
       
    • توسط unid_user
      سلام و درود
      دوستان گرامی ، علت پرش صفحه زمان hover شدن موس روی یک div در جی کوئری چیه؟
      $(".box #a-x").hover(function() { $('#x-img').stop().fadeIn('400'); }, function() { $('#x-img').stop().fadeOut('300'); }); $(".box #a-y").hover(function() { $('#y-img').stop().fadeIn('400'); }, function() { $('#y-img').stop().fadeOut('300'); }); البته بیش تر از این تعداده حدود 7 تگ هستش. لطفا راهنمایی کنید.
      با تشکر و سپاس
    • توسط amirmt
      سلام و عرض ادب هنگامی که سایتم و میخوام باز کنم و ادرسش رو سرچ میکنم یه صفحه سفید باز میشه که این اخطار رو میده 
      Parse error: syntax error, unexpected 'text' (T_STRING) in /home/unickir/public_html/wp-includes/class-oembed.php on line 461
      کسی میدونه مشکل کجاست و کمک کنه
      ادرس سایت}: www.unick.ir
×
×
  • اضافه کردن...