ورود

View Full Version : سوال: تغییر فرم اکشن با زدن اینتر



malihehshajari
یک شنبه 14 مهر 1392, 10:58 صبح
کد زیر رو نوشتم و از طریق جاوا اسکریپت فرم اکشن رو عوض کردم حالا میخوام این کار رو با ajax انجام بدم میشه راهنمایی کنید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/


function frm_worklist_Func1(e)
{

var myForm = document.getElementById('frm_worklist');
myForm.action = "/search_worklist/"
myForm.submit()
}

jalil_gh
یک شنبه 14 مهر 1392, 18:12 عصر
با جی‌کوئری به این صورت در میاد.
$('#frm_worklist').on('submit', function(e) {
e.preventDefault();
$.post('/search_worklist/', $(this).serialize());
});

malihehshajari
سه شنبه 16 مهر 1392, 10:29 صبح
من میخوام صفحه کامل رفرش نشه بخاطر همین میخوام با ajax این کار رو انجام بدم
:ناراحت:
هر چی گشتم چیزی پیدا نکردم

Javidhb
سه شنبه 16 مهر 1392, 11:28 صبح
شما باید اول خود ajax رو یاد بگیرید... بهتر (راحتتره) که از jQuery برای ajax استفاده کنید. (برای یادگرفتنش با یه سرچ مطالب زیادی رو پیدا میکنید)
ایم برای این که یه آشنایی مختصر پیدا کنید:


$(document).ready(function() {
$("#frm_worklist").on('submit', function(){
var action = 'har_adressi_ke_khastid_fefrestid.php';

$.ajax({
type : $(this).attr('method'),//gereftan 'method' az form
data: $(this).serialize(),//gereftan meghdare field-ha
url : action, //be onvane motaghayer mitonid har meghdari ro behesh bedid
dataType: 'json', // هم میتونه باشه - نوع برگشتی اطلاعات <- 'html','text'
success : function(data){
//data => مقدار برگشتی از سمت سرور
}
});

return false; //refresh nashodan safhe YA hamon codi ke dostemon bala goftan
});
});

malihehshajari
سه شنبه 16 مهر 1392, 11:34 صبح
type : $(this).attr('method'),//gereftan 'method' az form
data: $(this).serialize(),//gereftan meghdare field-ha

این دو خط رو همینجوری بنویسم ؟
یا متد رو باید تغییر بدم ؟
من بلد نیستم . ولی اینکا رو توی برنامم باید انجام بدم . خواهش یکم واضح تر توضیح بدید

Javidhb
سه شنبه 16 مهر 1392, 12:32 عصر
بله اگه

$("#frm_worklist").on('submit', function(){
استفاده میکنید میتونید (بهتره) که از اون دو خط استفاده کنید.

(this)$ اشاره داره به formی که داره سابمیت میشه.. پس
میتونید با (this)$، مقدار attribute (که توی jquery به اختصار attr هست) مقدار method فرم رو بگیرید.
()serialize (http://www.w3schools.com/jquery/ajax_serialize.asp) هم برای گرفتن مقادیر فیلدهای درون فرم بصورت name=value استفاده میشه.


اینجا (http://pars-soft.ir/index.aspx?Category=jquery-ajax)رو ببینید...

malihehshajari
سه شنبه 16 مهر 1392, 15:25 عصر
من بازم متوجه نشدم با عرض شرمندگی
ببینید من از پایتون و جنگو برای برنامه نویسی استفاده میکنم
توی این زبان من یک سری متد دارم که هر کدوم میتونه فرم اکشن من باشه
حالا این متدی که توی کد نوشتید منظورتون چی هست ؟
من خنگ نیستم ولی واقعا از آجاکس بدم میاد و نمیتونم بفهممش
لطفا کمک

Javidhb
سه شنبه 16 مهر 1392, 16:39 عصر
اختیار دارید...

توی فرم، ما یه method داریم یه action (اصطلاحا بهوشن attribute میگن، البته توی html اتریبیوتهای دیگه ای هم داریم)


<form action="yourPython.py" method="get">
<input type="text" name="name" value='Shajari'>
<input type="text" name="language" value='python'>
<input type="submit" value="send">
</form>
method: برای مشخص کردن، نحوه ارسال اطلاعات به سرور(که اکثرن post و get هست)-فرقشون رو هم خاستید بگید تا بگم.
action: در مورد شما، فایل پایتونی که سمت سرور، مسئول گرفتن و پردازش اطلاعاته فرم هست. (فرم بالا "yourPython.py")



//اضافه کردن jquery
<script src="jquery-1.9.1.js" type="text/javascript"></script>
<script>
(function($){
$("#frm_worklist").on('submit', function(){
var action = 'anotherpython.py'; //آدرس اون فایلی که میخاید اطلاعات رو بهش بفرستید

$.ajax({
type : $(this).attr('method'), //=> dar morede form ma 'get' ro barmigardone
data: $(this).serialize(), //in meghdare input 'name' va 'language' ro automatic barmigardone
url : action, //بالا مقدار بهش دادید
dataType: 'json', // هم میتونه باشه - نوع برگشتی اطلاعات <- 'html','text'

success : function(data){ //توی این مرحله اگه ارتباط با سرور موفقیت آمیز باشه
alert('YEssssss!'); //میتویند پردازش مد نظرتون رو انجام بدید
//data مقدار دریافتی از سمت سروره
}
});

return false; //جلوگیری از رفرش صفحه
});
})(jQuery);
</script>


اون data که از سرور برمیگرده، توی مثال بالا (چون نوع داده رو json انتخاب کردیم) از نوع object در جااواسکریپت هست.

حالا اگه بازم مشکلی بود ... یه کار میشه کرد شما کدهاتون(html و پایتون) رو بزارید من روی کدهای خودتون بگم.

malihehshajari
سه شنبه 16 مهر 1392, 16:52 عصر
اینا که گفتید رو متوجه شدم
حالا من میخوام وقتی از تکست باکسم خارج میشم این کار یعنی تغییر فرم اکشن انجام بشه نه با زدن دکمه



<input type = "text" class = "text_rtl" name = "Code_List" value = "{{ form.Code_List.value }}" onblur="frm_worklist_Func1(event)" />

Javidhb
سه شنبه 16 مهر 1392, 17:06 عصر
با jquery :



<input type = "text" class = "text_rtl" name = "Code_List" value = "{{ form.Code_List.value }}" onblur="frm_worklist_Func1(this)" />

<form action="test.py" method="get"></form>

<script src="jquery-1.9.1.js" type="text/javascript"></script>
<script>
function frm_worklist_Func1(element)
{
var newAction = element.value;

//تغییر اکشن فرممون
$('form').attr('action', newAction);
//الان اگه سورس فرم رو ببینید ... مقدار اکشن تغییر کرده
}
</script>

malihehshajari
چهارشنبه 17 مهر 1392, 09:17 صبح
ممنون از اینکه وقت گذاشتید اینم اونی نیست که من میخوام
حالا خودم بگردم بازم تو نت شاید پیداش کنم
خیلی لطف کردید:لبخندساده: