View Full Version : سوال: نحوه استفاده از $.post() و $.ajax() در نمایش صفحات
alismith
سه شنبه 24 اسفند 1389, 09:52 صبح
سلام
خیلی ممنون می شم اگه یکی جواب سوال من رو بده چون خیلی برام مهمه، می خواستم بدونم دقیقا این دو تابع چطوری عمل می کنند؟
بگذارید یک مثال براتون بزنم که دقیقا همون کاری هستش که انتظار دارم این توابع انجام بدن:
مثلا من برای اینکه یه صفحه دوباره لود نشه از frame استفاده می کنم و به target لینک ها اون frame رو نسبت میدم تا تو frame اون لینک لود بشه و صفحه اصلی دوباره لود نشه، در اینجا من از طریق frame یه صفحه دیگری رو در صفحه اصلی نمایش میدم نکته اصلی اینجا هستش که من در این روش یه صفحه دیگه ای را لود می کنم اما سوالم اینه که آیا میشه با توابع مذکور، هم این کا رو انجام داد و هم در زمان ارسال لینک (منظورم همون کلیک کردن رو لینک هستش) متغییر هایی رو هم فرستاد و از همه مهمتر اینکه بعد از ارسال لینک و متغییر ها به صفحه مقصد (در php) چطوری اون صفحه رو با تغییراتی که روش اعمال شده رو در صفحه اصلی نمایش بدم؟ ، یعنی چی کار frame رو انجام میده؟؟؟
با تشکر
eleboys
پنج شنبه 26 اسفند 1389, 11:00 صبح
توابع $.post() و $.get() و $.ajax() در جی کوئری برای انجام وظایف آژاکسی (ارسال request و دریافت اطلاعات بدون پست بک شدن صفحه) طراحی شده اند.
بعضی از مواقع استفاده از همون iFrame بهترین و ساده ترین راه هستش (با وجود اینکه این تگ دیگه جزو استانداردهای HTML نیست).
برای استفاده از توابع ذکر شده بالا بزارید یه مثال براتون بزنم. فکر کنید یک grid (جدولی از داده ها) روی صفحه تون دارید که این داده های این جدول داره به صورت لحظه ای تغییر میکنه (نتایج بازی های فوتبال) حالا شما میاید یه دکمه بروز رسانی میزارید روی صفحتون که زمان کلیک روی اون با استفاده از یکی از توابع بالا یه درخواست ajax به سرور می فرستید تا دقیقا فقط محتویات HTML ای که اون جدول رو نمایش میده برای شما بر می گردونه.. حالا شما فقط کافیه محتویات قبلی جدول رو با محتویات جدید جایگزین کنید... (اینا فقط توضیحات تئوری هست) تمام اینکارا بدون پست بک شدن صفحه و حتی با سرعت بسیار کم اینترنت (Dialup) در کمتر از 4 ثانیه شاید انجام بشه بدون اینکه نیاز باشه برای آپدیت شدن این جدول کل صفحه پست بک بشه!
alismith
پنج شنبه 26 اسفند 1389, 13:29 عصر
ممنون از توضیح شما ولی مثلا من می خوام وقتی با همین تابع post مقداری رو به صفحه مقصد (مثلا عدد 12 رو به صفحه result.php) فرستادم ، این تابع متغییری رو که در اون صفحه مقصد قرار داره و ما اون مقدار عددی رو درش ذخیره کردیم بدون reload صفحه جاری به ما نمایش بده (یعنی مقدار اون متغییر رو از صفح مقصد در صفحه جاری چاپ کنه)؟؟؟
با تشکر
eleboys
پنج شنبه 26 اسفند 1389, 18:40 عصر
یکمی توضیحاتتون گنگ بود اما من درحدی که برداشت کردم جواب میدم. ببینید با استفاده از همین تابع post شما میتونید یک یا چند مقدار رو به صفحه ای دیگر ارسال کنید. مثلا قصد دارید یک ردیف از دیتابیس پاک کنید که میدونید آی دی اون ردیف مثلا همین 12 که گفتید هست، عدد 12 رو به اون صفحه میفرستید در کد سرور ساید اون صفحه (مثلا deleteme.php) ایدی رو که بهش پاس شده دریافت میکنه (دراینجا 12) و بعد ردیف رو پاک می کنه. حالا در اینجا صفحه سرور ساید میتونه مقداری رو برگردونه یا بر نگردونه. تابع post بعد از کامل شدن عملیات (درصورت موفقیت) یه فانکش رو اجرا میکنه (تونحوه کار با این تابع باید ببینید چطور) که مقدار بازگشتی از سرور رو داخل این فانکشن به شما میده. و مثلا شما میتونید بفهمید سمت سرور چه اتفاقی افتاده یا اون مقدار بازگشتی رو به نحوی نمایش دهید.
نتیجه گیری اینکه بعله شما میتونید یک یا چند مقدار رو به برنامه سمت سرورتون پاس کنید در اونجا یکسری عملیات رو انجام بدید و یک مقدار رو که جواب از سمت سرور هست رو پس بگیرید و نمایش بدید.
alismith
جمعه 27 اسفند 1389, 09:18 صبح
نتیجه گیری اینکه بعله شما میتونید یک یا چند مقدار رو به برنامه سمت سرورتون پاس کنید در اونجا یکسری عملیات رو انجام بدید و یک مقدار رو که جواب از سمت سرور هست رو پس بگیرید و نمایش بدید.
آقا خیلی ممنون، اما با عرض معذرت باید بگم من خودم روی این قضایا که وقت گذاشتید و لطف کردید نوشتید مشکلی ندارم بلکه مشکل اصلی من اینکه چطور اون مقدار رو بعد از ارسال به سمت سرور دوباره در صفحه ای که قرار داریم به معنی موفقیت عملیات برگردونم
مثلا: همین عدد 12 رو فرستادم و دیتابیس یک رکورد رو با id 12 پاک کرد حالا نمی خوام این تابع post به من پیغام بده که با موفقیت عدد 12 رو در اختیار صفحه مقصد یا deleteme قرار دادم بلکه می خوام تابعی وجود داشته باشه(البته این شاید ربطی به jquery نداشته باشه و به وسیله php انجام بشه) و اگه اون رکورد با موفقیت پاک شد در همون صفحه جاری منظورم همون صفحه ای است که از اونجا عدد 12 رو فرستادیم، پیغامی رو بدون reload شدن دوباره صفحه چاپ کنه و بگه اون رکورد با موفقیت پاک شد!!!
با تشکر
eleboys
جمعه 27 اسفند 1389, 11:22 صبح
پس شما تمام کار رو انجام دادید چطور تو این قسمت کوچیک گیر کردید! همونطور که میدونی تابع post چندین مقدار ورودی میگیره (از جمله آدرس صفحه سرور ساید؛ پارامتر هایی که می خوای ارسال بشه و....) دوتا از این پارامترها با اسم success و error از جنس فانکشن هستند که اولی زمانی که عملیات با موفقیت انجام بشه اجرا میشه و دومی زمانی که خطایی رخ بده. شما باید از اولی به روش زیر استفاده کنی:
$.ajax({
url: 'yourpage.php',
.
. // سایر پارامتر ها
.
success: function(data) {
// متغیر data حاوی مقداری است که از سمت سرور فرستاده شده
// هر عملیاتی که می خواهید بعد از موفقیت آمیز بودن درخواست
// انجام بشه اینجا بنویسید
alert('با موفقیت انجام شد');
},
error: function(({
alert('بروز خطا هنگام انجام عملیات');
}
});
alismith
جمعه 27 اسفند 1389, 15:32 عصر
$.ajax({
url: 'yourpage.php',
.
. // سایر پارامتر ها
.
success: function(data) {
// متغیر data حاوی مقداری است که از سمت سرور فرستاده شده
// هر عملیاتی که می خواهید بعد از موفقیت آمیز بودن درخواست
// انجام بشه اینجا بنویسید
alert('با موفقیت انجام شد');
},
error: function(({
alert('بروز خطا هنگام انجام عملیات');
}
});
آقا خیلی ممنون ولی من یه سوال دیگه هم دارم شما فرض کنید مطابق اون بحث های قبلی عدد 12 رو در یک متغییر با نام recordID ریختیم و بعد اون رکورد رو پاک کردیم حالا من چطوری این متغییری رو که در phpتعریف کردم و حاوی عدد 12 هست رو در اختیار تابع success در صفحه جاری قرار بدم؟؟؟؟؟؟؟؟؟
// Result Page :
<?php
$recordID;
//function for data base operating
?>
// IndexPage :
var row = "12";
$.ajax({
url: "result.php",
recordID: "12",
//میشه اینجا از جاوا اسکریپت هم استفاده کرد؟؟
recordID: row, // is ok?
success: function(data) {
/*
چطوری اون متغییر رو اینجا نمایش بدم
recordID
رو می گم
*/
alert(recordID);
},
error: function(({
alert('بروز خطا هنگام انجام عملیات');
}
});
با تشکر
Lisavast
شنبه 28 اسفند 1389, 03:41 صبح
Welcome to free gay porno tube (http://www.amateurvideoteens.com), a neighbourhood featuring licit clumsy girls who were truly screwed on me! I exit my field, shabby a different lifestyle, and started using the video camera I got as a present to blur girls I dispose of in the streets. It’s surprising how many girls are actually ready to go for fucked past a complete foreigner with a camera! And other recommend sites: young money every girl youtube (http://www.mytubeporn.net/index.php?act=10) - amateur hidden cams big ass mature tube (http://www.allsexweb.net/) - voyuer amateur teen videos tube (http://www.amateurnudesex.net/index.php?act=17) - amateur footjobs free porn star tubes (http://www.amateurnudesex.net/index.php?act=25) - amateur arab sex free porn tube creampie (http://www.amateurteenvideo.cn/) - amateur female sex you tube fuck videos (http://www.amateurvideoteens.com/) - worldsex amateur huge tits tube porn (http://www.amateurvideoteens.com/index.php?tags=jn) - amateur fucking hard free domination tube (http://www.tube777.net/index.php?tags=0d) - veronica amateur nude exercise tube (http://www.amateurnudesex.net/index.php?act=22) - amateur pantyhose pictures gay xxx tubes (http://www.amateurteenvideo.cn/index.php?act=28) - amateur webcam sex video
majidmjh
جمعه 05 فروردین 1390, 13:02 عصر
علی جان بستگی داره بخوای از چه زبونی استفاده کنی؛
اگه ASP.Net باشه، باید از وب سرویس استفاده کنی و موقع برگشتن داده مقدار از عبارت Return استفاده کنی، اونوقت مقداری که شما دوست داری رو به تابع Ajax یا ... در جاوااسکرپیت پاس داده می شه،
اما در PHP؛ شما باید مقداری را که می خوای به جاواسکرپیت پاس داده بشه رو echo کنی ! برای مثال شما عدد 12 را به سرور پاس می دی و سرور آی دی 12 رو پاک می کنه ، انتهای فانکشن باید echo کنی که با موفقیت انجام شد ...
به جوابت رسیدی ؟ من هم php هم ASP.Net رو با هر دو زبون (VB,C) کار کردم و از همشون جواب گرفتم. اگه متوجه نشدی بگو بیشتر توضیح بدم.
click2ir
جمعه 23 اردیبهشت 1390, 12:10 عصر
سلام دوست عزیز می شه راجع مطلب اخر و راجع پاس کردن مقدار در زبان پی اچ پی توضیح بدید .
یعنی بین جاوا اسکریپت و پی اچ پی
اگر امکان داره یه مثال هم بزنید .:بوس:
alismith
جمعه 23 اردیبهشت 1390, 13:40 عصر
سلام
من وقتی این تاپیک رو درست کرده بودم خیلی با jquery آشنایی نداشتم الان دیگه در این رابطه مشکلی ندارم و جواب این سوال رو گرفتم
خیلی ممنون برای پستی که گذاشتید
البته کلا منظورم دریافت، نتیجه عملیات سمت سرور و نمایش اون خروجی در سمت کلاینت به وسیله Ajax بود
با تشکر , موفق باشید
exlord
جمعه 23 اردیبهشت 1390, 13:50 عصر
var row = "12";
$.ajax({
dataType: "html",
url: "handler.php",//or handler.aspx or handler.ashx
data: { recordID: row },
type: 'POST',
complete: function (XMLHttpRequest, textStatus) { },
success: function (data, textStatus, XMLHttpRequest) {
$('#myDiv').html(data);
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
ThrowError(textStatus, XMLHttpRequest);
}
});
<?php
if(isset($_POST['recordID']))
{
//do your thing
echo "Result Text";//return the result
}
?>
aspx
protected void Page_Load(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request["recordID"]))
{
//do your thing
Response.Write("Result Text");
}
}
ashx
public void ProcessRequest(HttpContext context)
{
if (!String.IsNullOrEmpty(context.Request["recordID"]))
{
//do your thing
context.Response.Write("Result Text");
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.