LORD AELX
چهارشنبه 20 مرداد 1389, 18:06 عصر
هدف من از ایجاد این تاپیک اینه که تجربیات این چند روز خودم رو با شما به اشتراک بگذارم و همینطور راه هایی رو که از اون ها جواب گرفتم ذکر کنم و راجع بهشون تبادل نظر کنیم. ضمن اینکه بررسی کنیم که چرا روش های دیگر عملیاتی نمی باشند. :متفکر:
ببینید، هدف از ارسال مقادیر به سرور توسط jQuery فقط AJAX بودن کار نیست، مزایای دیگری هم داره که باعث میشه کد HTML کمتر و استفاده کمتر از دکمه submit داشته باشیم ضمن اینکه یکسری از کار ها رو سمت کلاینت انجام بدهیم. :لبخندساده:
من تو این چند روز خیلی تو وب گشتم و روش های ارسال رو بررسی کردم ولی خوب، بعضی از اونا کار نمی کنند. در واقع بهتر بگویم، آن دسته از ورودی هایی که درون تگ فرم قرار نگرفته بودند و Form Submit ای در کار نبود، بازگشت نتیجه ای نداشتند. علاوه بر آن، تنها چیزی که غیر از ارسال تگ فرم قابلیت عملیاتی داشت، لینک هایی بود که href آن ها برابر یک آدرس بعلاوه Query String بود.
آیا من نباید بتونم با انتخاب یک مقدار از SELECT (همون Combo Box یا DropDown Box)، بلافاصله مقدار آن را بدست بیاورم و آن را به سرور ارسال کنم و سرور هم نتیجه را بازگشت بدهد؟ چرا حتما باید Refresh ای در کار باشد؟! بیشتر منظورم زمانی هست که همه عملیات و HTML و ... در یک فایل PHP پیاده سازی می شود. در این صورت چطور می توان با کدی همانند زیر، چنین مقداری را به سرور ارسال کرد و نتیجه را هم دید؟!
<?php
# I'm test.php
if(isset($_POST['s1'])) {
echo $_POST['s1'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Example 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="styles.css" type="text/css" />
<script language="javascript" src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#s1').change(function(){
var selected = $("#s1 option:selected").val();
$.post("test.php", { name: selected} ); // or => $.post("test.php", { 'name': selected} ); => There is no difference between
});
});
</script>
</head>
<body>
<select name="s1" id="s1">
<option value="v1">Value 1</option>
<option value="v2">Value 2</option>
<option value="v3">Value 3</option>
</select>
</body>
</html>
ولی مثلا همین مثال را به این شکل می توان پیاده سازی کرد:
<?php
# I'm test.php
if(isset($_POST['s1'])) {
echo $_POST['s1'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Example 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="styles.css" type="text/css" />
<script language="javascript" src="jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form name="frm" id="frm" action="<?php echo $PHP_SELF?>" method="POST">
<select name="s1" onchange="javascript: $('#frm').submit();">
<option value="v1">Value 1</option>
<option value="v2">Value 2</option>
<option value="v3">Value 3</option>
</select>
</form>
</body>
</html>
خوب، چرا کد اولی عملیاتی نیست؟! نمیگم که باید به اون شکلی که نوشته شده کار کنه، مسلما چون refresh ای در کار نیست، این انتظار هم ازش نمیره ولی آیا راه دیگه ای نیست؟ یا آیا راهی نیست تا AJAX را برای خود آن فایل بصورت درونی کار کنیم؟
این مسئله به همین جا ختم نمی شود... :اشتباه: حتی مثلا وقتی من می خواستم با کلیک روی یک تصویر یک رکورد از دیتابیس را حذف کنم و با کلیک بر روی دیگری آن را ویرایش نمایم، مجبور شدم بجای راه های ساده و ... علاوه بر قرار دادن فرم در اطراف این ناحیه، چند input از نوع hidden هم تعریف کنم و سپس با jQuery مقدار value آن ها را ست کرده و سپس فرم را submit کنم....
و ... و ... و ... . الآن دیگه حوصله بیشتر نوشتن رو ندارم، فقط به عنوان شروع بپذیرید تا بعدا بیشتر بحث کنیم... بچه هایی هم که میدونند اینا رو و میدونم که میدونند، لطف کنن این قضیه رو توجیه کنند. راه کار منطقی، بهینه و عملیاتی ارایه دهید وگرنه یک کار به n طریق قابل انجام است و به کار انداختن یک وبسایت فقط صرف کار کردن آن از هر کسی بر میاید. مسئله مهم برای من مثل همیشه کدنویسی کمتر، بهینه، منطقی، قدرتمند و قابل انعطاف است.
متشکرم :قلب:
ببینید، هدف از ارسال مقادیر به سرور توسط jQuery فقط AJAX بودن کار نیست، مزایای دیگری هم داره که باعث میشه کد HTML کمتر و استفاده کمتر از دکمه submit داشته باشیم ضمن اینکه یکسری از کار ها رو سمت کلاینت انجام بدهیم. :لبخندساده:
من تو این چند روز خیلی تو وب گشتم و روش های ارسال رو بررسی کردم ولی خوب، بعضی از اونا کار نمی کنند. در واقع بهتر بگویم، آن دسته از ورودی هایی که درون تگ فرم قرار نگرفته بودند و Form Submit ای در کار نبود، بازگشت نتیجه ای نداشتند. علاوه بر آن، تنها چیزی که غیر از ارسال تگ فرم قابلیت عملیاتی داشت، لینک هایی بود که href آن ها برابر یک آدرس بعلاوه Query String بود.
آیا من نباید بتونم با انتخاب یک مقدار از SELECT (همون Combo Box یا DropDown Box)، بلافاصله مقدار آن را بدست بیاورم و آن را به سرور ارسال کنم و سرور هم نتیجه را بازگشت بدهد؟ چرا حتما باید Refresh ای در کار باشد؟! بیشتر منظورم زمانی هست که همه عملیات و HTML و ... در یک فایل PHP پیاده سازی می شود. در این صورت چطور می توان با کدی همانند زیر، چنین مقداری را به سرور ارسال کرد و نتیجه را هم دید؟!
<?php
# I'm test.php
if(isset($_POST['s1'])) {
echo $_POST['s1'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Example 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="styles.css" type="text/css" />
<script language="javascript" src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#s1').change(function(){
var selected = $("#s1 option:selected").val();
$.post("test.php", { name: selected} ); // or => $.post("test.php", { 'name': selected} ); => There is no difference between
});
});
</script>
</head>
<body>
<select name="s1" id="s1">
<option value="v1">Value 1</option>
<option value="v2">Value 2</option>
<option value="v3">Value 3</option>
</select>
</body>
</html>
ولی مثلا همین مثال را به این شکل می توان پیاده سازی کرد:
<?php
# I'm test.php
if(isset($_POST['s1'])) {
echo $_POST['s1'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Example 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="styles.css" type="text/css" />
<script language="javascript" src="jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form name="frm" id="frm" action="<?php echo $PHP_SELF?>" method="POST">
<select name="s1" onchange="javascript: $('#frm').submit();">
<option value="v1">Value 1</option>
<option value="v2">Value 2</option>
<option value="v3">Value 3</option>
</select>
</form>
</body>
</html>
خوب، چرا کد اولی عملیاتی نیست؟! نمیگم که باید به اون شکلی که نوشته شده کار کنه، مسلما چون refresh ای در کار نیست، این انتظار هم ازش نمیره ولی آیا راه دیگه ای نیست؟ یا آیا راهی نیست تا AJAX را برای خود آن فایل بصورت درونی کار کنیم؟
این مسئله به همین جا ختم نمی شود... :اشتباه: حتی مثلا وقتی من می خواستم با کلیک روی یک تصویر یک رکورد از دیتابیس را حذف کنم و با کلیک بر روی دیگری آن را ویرایش نمایم، مجبور شدم بجای راه های ساده و ... علاوه بر قرار دادن فرم در اطراف این ناحیه، چند input از نوع hidden هم تعریف کنم و سپس با jQuery مقدار value آن ها را ست کرده و سپس فرم را submit کنم....
و ... و ... و ... . الآن دیگه حوصله بیشتر نوشتن رو ندارم، فقط به عنوان شروع بپذیرید تا بعدا بیشتر بحث کنیم... بچه هایی هم که میدونند اینا رو و میدونم که میدونند، لطف کنن این قضیه رو توجیه کنند. راه کار منطقی، بهینه و عملیاتی ارایه دهید وگرنه یک کار به n طریق قابل انجام است و به کار انداختن یک وبسایت فقط صرف کار کردن آن از هر کسی بر میاید. مسئله مهم برای من مثل همیشه کدنویسی کمتر، بهینه، منطقی، قدرتمند و قابل انعطاف است.
متشکرم :قلب: