کلاس کامل Ajax مخصوص کاربران حرفه ای!

eAmin

Well-Known Member
دوست من منظورم اینه که مثلاً تو Section A دو تا متغیر GET رو چاپ کنم

مثلاً من تو index.php دو تا input text گذاشتم و به هرکدوم یک ID دادم
کد:
<input type="text" name="a" size="4" id="val1"> 
<input type="text" name="b" size="4" id="val2">

<button onClick="send_get('secA','secA','<img src=\'a-loading.gif\'>','test.php','val1');" style="width: 104">
ولی واسه این تگ button نمیدونم چه کار کنم که مقدار val2 هم بفرسته به test.php

وقتی به همین صورت چیزی داخل input ها مینویسم فقط مقدار input اول رو میگیره و 2 بار نمایش میده

من میخوام هر چندتا input که خواستم بفرستم و تو section A نمایش بدم


کد:
function send_get(a,b,c,d,e){
	ajax = new Ajax;
	d=d+'?val1='+ajax.getElement(e).value + '&val2='+ajax.getElement(e).value;
	ajax.setvals(a,b,c,d,e,null);
	ajax.get();
}

ممنون میشم راهنمایی کنی ، تو مثال هایی که گذاشتی همچین چیزی که من میخوام نداره
ببینید دوست عزیز، ارسال پارامتر در متد get بصورت درونی توی اینکلاس گذاشته نشده و اینکار واگذار شده به متد post که هرچی نیاز داشتید رو با متد postبفرستید.

حالا اگر حتما می خواید که با متد get پارامترهاتون رو ارسال کنید، کلاس Ajax متد get ش رو باید به این صورت تغییر بدید:
کد:
	this.get = function(){
		if(this.x()){
			this.xmlObject.onreadystatechange=this.changestate;
			this.xmlObject.open("GET",this.url+'?noCache='+ (+new Date) + '&' + this.parameters);
			this.xmlObject.send(null);
		}
	}
بعد از این فکر نمی کنم دیگه مشکلی پیش بیاد.
موفق باشید.
 
آخرین ویرایش:
مرسی از جوابت

اما دوست من منظورم اینه که

شما دو تا INPUT داری تو صفحت به شکل زیر

کد:
<input type="text" name="a" size="4" id="val1"> 
<input type="text" name="b" size="4" id="val2">

که id یکشون val1 و دیگری val2

حالا من تو این button که کدش به این شکل هست باید id این 2 تا input رو داخلش قرار بدم دیگه ( چون میخوام 2 تا مقدار رو بفرستم

کد:
<button onClick="send_get('secA','secA','<img src=\'a-loading.gif\'>','test.php','val1');" style="width: 104">

ولی درست نیست جون نمیتونم دو تا مقدار input رو بفرستم ( فقط یکیش فرستاده میشه )

لطفاً به صورت یک مثال راهنمایی کنیدددد
 

eAmin

Well-Known Member
اگر از همون اول تمامی مقاله رو کامل می خوندید، حالا هیچ مشکلی نداشتید، بنده رو هم به اشتباه نمی انداختید!

خب برای اینکه بخواید دوتا پارامتر متفاوت روبفرستید چرا id یکسان برای اون textbox هاتون قرار دادید؟ یعنی شما نمی دونستید باید یک آرگومان دیگه به تابع اضافه می کردید تا id تکست باکس دومتون رو در اون آرگومان قرار می دادید؟
این کد ویرایش شده ی شما، دقیقا همون چیزی که مدنظر داشتید:
کد:
send_get('secA','secA','<img src=\'a-loading.gif\'>','test.php', 'val1', 'val2');

function send_get(a,b,c,d,val1,val2){
	ajax = new Ajax();
	ajax.setvals(a,b,c,d,null,'val1='+ajax.getElement(val1).value + '&val2='+ajax.getElement(val2).value);
	ajax.get();
}

پیشنهاد می کنم حتما دوباره تا پیک رو از اول با تمرکز بیشتر بخونید.
موفق باشید.
 
ممنون دوست عزیز ، اما میشه بگین اون متغیر noCache چی هست که تو متد get قرار دادید ؟

چون من هر چیزیو که میخوام چاپ کنم این متغیر noCache هم خودش یک مقداری میگیره و چاچ میکنه خودشو و مجبور شدم از متد get بردارمش

حالا ممنون میشم توضیحی راجبش بدین و اینکه چرا چاپ میشه !؟

کد:
this.get = function(){
		if(this.x()){
			this.xmlObject.onreadystatechange=this.changestate;
			this.xmlObject.open("GET",this.url+'?noCache='+ (+new Date) + '&' + this.parameters);
			this.xmlObject.send(null);
		}
	}
 
آخرین ویرایش:

eAmin

Well-Known Member
ممنون دوست عزیز ، اما میشه بگین اون متغیر noCache چی هست که تو متد get قرار دادید ؟

چون من هر چیزیو که میخوام چاپ کنم این متغیر noCache هم خودش یک مقداری میگیره و چاچ میکنه خودشو و مجبور شدم از متد get بردارمش

حالا ممنون میشم توضیحی راجبش بدین و اینکه چرا چاپ میشه !؟

کد:
this.get = function(){
		if(this.x()){
			this.xmlObject.onreadystatechange=this.changestate;
			this.xmlObject.open("GET",this.url+'?noCache='+ (+new Date) + '&' + this.parameters);
			this.xmlObject.send(null);
		}
	}
فکر می کنم اسمش گوبای همه چیز باشه!
در مرورگر ie برای اینکه درخواستهایی که جوابشون رو دریافت کردید، در سیستم کاریر ذخیره نشه، این پارامتر برای جلوگیری از اینکار به url اضافه شده.
فرض کنید توی سرور یک اتفاقی افتاده و به عنوان مثال کلمه Hello به Hi تغییر کرده وقتی در ie بخواید درخواستتون رو مجدد بفرستید دوباره همون کلمه قبلی رو مشاهده می کنید در صورتی که این کلمه در سرور تغییر کرده!

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

چجوری این کلاس را تغییر بدم که به جای ID اون شی Class بگیره

یعنی به جای ID
کد:
<input type="text" name="name" size="4" id="name" >

Class رو بگیره :
کد:
<input type="text" name="name" size="4" class="name" >
 

eAmin

Well-Known Member
جناب یک سوال دیگه :

چجوری این کلاس را تغییر بدم که به جای ID اون شی Class بگیره

یعنی به جای ID
کد:
<input type="text" name="name" size="4" id="name" >

Class رو بگیره :
کد:
<input type="text" name="name" size="4" class="name" >
سوالتون ربطی به محتوای تاپیک نداره، و اصلا ربطی به Ajax نداره. قرار نیست که از این کلاس برای شما یک فریمورک ایجاد کنیم.
سوالتون رو در جای مناسبش مطرح کنید، تا به جوابتون برسید.
 
سلام ، جناب amin ehelp
اکثر مشکلات و امکانات این کلاس تو همین تاپیک انجام شده ، فکر میکنم تاپیک رو پخش و پلا نکنیم بهتر باشه و در مورد همین کلاس تو همین تاپیک بحث بشه
 

eAmin

Well-Known Member
سلام.

ببینید همونطور که از اسم این تاپیک و یا همین تالار معلوم هست، اینجا صرفا مختص Ajax هست، و نه چیز دیگه ای. حالا شما فکر می کنید برای اینکه یک المنت رو از طریق class اون دیافت کنید، باید بیاید در همین تاپیک سوالتون رو بپرسید؟

در پست قبلی هم بهش اشاره کردم، این چیزی که شما می خواید هیچ ربطی به اینجا نداره، از همون اول این کلاس برای استفاده از Ajax معرفی و ایجاد شده نه اینکه قابلیتهای اضافه ای که مربوط به برنامه نویسی JavaScript هست رو اینجا مطرح کنید.

در هرصورت برای آخرین بار این خواسته ی شما رو انجام می دم. ( فقط یادتون باشه درخواست کد در فروم خلاف قوانین هست و بار دومی وجود نداره. )

فایل ضمیمه رو دانلود کنید.
 

پیوست ها

  • sample.rar
    1.7 کیلوبایت · بازدیدها: 65
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
سلام.

ببینید همونطور که از اسم این تاپیک و یا همین تالار معلوم هست، اینجا صرفا مختص ajax هست، و نه چیز دیگه ای. حالا شما فکر می کنید برای اینکه یک المنت رو از طریق class اون دیافت کنید، باید بیاید در همین تاپیک سوالتون رو بپرسید؟

در پست قبلی هم بهش اشاره کردم، این چیزی که شما می خواید هیچ ربطی به اینجا نداره، از همون اول این کلاس برای استفاده از ajax معرفی و ایجاد شده نه اینکه قابلیتهای اضافه ای که مربوط به برنامه نویسی javascript هست رو اینجا مطرح کنید.

در هرصورت برای آخرین بار این خواسته ی شما رو انجام می دم. ( فقط یادتون باشه درخواست کد در فروم خلاف قوانین هست و بار دومی وجود نداره. )

فایل ضمیمه رو دانلود کنید.
خیلی ممنون امین جان که به سوالات پاسخ دادی! راستش من اصلا این تاپیک رو فراموش کرده بودم!!
دوستان این کلاس در حال ارتقا و بهینه سازی هست لطفا چند روز صبر کنید تا نسخه جدید رو جایگزین کنم

موفق باشید
 
خیلی ممنون امین جان که به سوالات پاسخ دادی! راستش من اصلا این تاپیک رو فراموش کرده بودم!!
دوستان این کلاس در حال ارتقا و بهینه سازی هست لطفا چند روز صبر کنید تا نسخه جدید رو جایگزین کنم

موفق باشید

سلام ، shahkey جان آماده نشد !؟ چند روز شد چند سال :green:

حداقل بیا یک توضیحی بده که چی کارا کردیش و اینکه کی پابلیک میشه

منتظریم
 

ziXet

مدیر انجمن PHP/MYSQL
سلام ، shahkey جان آماده نشد !؟ چند روز شد چند سال :green:

حداقل بیا یک توضیحی بده که چی کارا کردیش و اینکه کی پابلیک میشه

منتظریم
سلام!

راستش من چند روز پیش اومدم به این تاپیک و با بازبینی مجدد این کلاس دیدم که اگه دستکایرش کنم جلوی flexibility یا همون انعطاف کلاس گرفته میشه.
شما اگه بگی دقیقا مشکلت چیه خیلی بهتر میتونم راهنماییت کنم

موفق باشید
 
سلام
راستش این کلاس رو وقتی رو یک تگ اجرا میکنم

مثالاً 3 تا پست دارم صفحه که فقط عنوان اونارو نمایش میدم ، و وقتی رو این عنوان های کلیک میکنم هر کردم با توجه به مقداری که تو value دارن یک توضحاتی رو که مخصوص به همون id هست نمایش میدن ( مثل ادامه متن ... )

اما این کلاس رو ID شی تنظیم میشه و id فقط میتونه واسه یک شی تعریف بشه واسه همین من رو هرکدوم از عنوان های کلیک میکنم باعث میشه فقط ادامه متن عنوان اول نمایش داده بشه

واسه همین یکم جستجو کردم و به این قضیه رسیدم که باید این کلاس روی خاصیت class ست بشه به جای id

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

ممنون میشم شما راهنمایی کنید تو این زمینه
 

ziXet

مدیر انجمن PHP/MYSQL
سلام
راستش این کلاس رو وقتی رو یک تگ اجرا میکنم

مثالاً 3 تا پست دارم صفحه که فقط عنوان اونارو نمایش میدم ، و وقتی رو این عنوان های کلیک میکنم هر کردم با توجه به مقداری که تو value دارن یک توضحاتی رو که مخصوص به همون id هست نمایش میدن ( مثل ادامه متن ... )

اما این کلاس رو ID شی تنظیم میشه و id فقط میتونه واسه یک شی تعریف بشه واسه همین من رو هرکدوم از عنوان های کلیک میکنم باعث میشه فقط ادامه متن عنوان اول نمایش داده بشه

واسه همین یکم جستجو کردم و به این قضیه رسیدم که باید این کلاس روی خاصیت class ست بشه به جای id

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

ممنون میشم شما راهنمایی کنید تو این زمینه
سلام مجدد

خب فکر کنم شما منطق استفاده از id رو نفهمیدید.
id به صورت یکتا در هر document تعریف میشه و شما با استفاده از id به راختی میتونی به اشیا document دسترسی داشته باشید.
شما برای این کار حتما باید از id استفاده کنید.
به کدهای زیر توجه کنید:
این کد html شماست که 3 تا title رو مشخص میکنه.
کد:
<h1>Title 1</h1><br/>
<a href="#" onclick="xcontinue(1)">Continue...</a>
<div id="continue_container_1"></div>

<h1>Title 2</h1><br/>
<a href="#" onclick="xcontinue(2)">Continue...</a>
<div id="continue_container_2"></div>

<h1>Title 3</h1><br/>
<a href="#" onclick="xcontinue(3)">Continue...</a>
<div id="continue_container_3"></div>
برای هر title یک container تعریف میشه که به id اون اینه : continue_container_id
که مقدار id برابر شماره خبر title یا خبر هست(پیشنهاد میشه که این شماره از یک فیلد auto increment در تیبل باشه)
خب اگه دقت کرده باشی روی لینک continue اگه کاربر کلیک کنه یه فانکشن به نام xcontinue فراخونی میشه و مقدار id اون title رو میفرسته به تابع
اینم میشه تابع مورد نظر:
کد:
function xcontinue(id){
    Var ajax = new Ajax;
    ajax.setvals('continue_container_'+id, 'continue_container_'+id , 'Loading...', 'continue.php?id='+id, null);
    ajax.post();
}
خب این تابع وقتی مثلا با مقدار id = 2 فراخونی بشه (یعنی کاربر بخواد ادامه title 2 رو ببینه) اسکریپت php که اسمش continue.php هست توسط ajax لود میشه و در درون تو جای مورد نظر قرار میگیره.

فکر کنم توضیحات کامل بود.
اگه مشکلی هنوز هست بپرس.

موفق باشید
 

NojanServer

Member
با سلام خدمت اساتید محترم

من یک سوال در مورد ajax داشتم.

من از یک اسلاید شو استفاده می کنم که بر روی هر تصویر که کلیک می شه بک lightbox باز می شه و یک سری توضیحات در اول پنجره نمایش داده میشه.
مشکل من اینه که مجبورم این اسلاید شو رو با استفاده از iframe در سایت بذارم که نمایش اسلاید شو مشکلی نداره و lightbox ها داخل iframe نمایش داده میشن. آیا راهی هست که بشه تعریف کرد لایت باکس در صفحه اصلی سایت باز بشن ؟
 

جدیدترین ارسال ها

بالا