PDA

View Full Version : مبتدی: رفرش نشدن صفحه بواسطه فرستادن فرم



alimooghashang
شنبه 26 آذر 1390, 03:23 صبح
سلام
من یه فرم دارم اینطوری
میخوام وقتی فرم رو ارسال میکنم صفحه رفرش نشه ولی عملیات پست فرم انجام بشه
میشه راهنمایی کنید چطوری باید این کار رو بکنم
نوع فرم که multipart/form-data هست خیلی واسم تو ارسال مهمه چون خودم post کردم ولی enctype اش عوض میشه



<form onsubmit="" method="post" action="http://mysite.com/upload.php" enctype="multipart/form-data" name="url">
<input type="hidden" value="" name="sess_id">
<textarea rows="1" cols="36" name="url_mass"></textarea>
<input type="submit" class="btn" value=" Upload! " name="submit_btn">
</form>

من اینطوری فرستادم


var dataString = $("form").serialize();

$.ajax({
type: "POST",
url: "mysite.com",
data: dataString,
enctype:"multipart/form-data",
name:"url",
success: function(responseText, responseStatus) {
alert(responseText);
}
});
return false;

mehdi.mousavi
شنبه 26 آذر 1390, 12:04 عصر
سلام.
متود serialize داده های فرم رو بصورت url-encoded در میاره، بطور مثال fname=ali&lname=akbari و این داده، برای ارسال بصورت multipart/form-data مناسب نیست! در واقع داده ای که می خواهید ارسال کنید type اش application/x-www-form-urlencoded هستش. از این گذشته، متود ajax پارامتری به اسم enctype نداره، بلکه شما باید با contentType مقدار مورد نظر رو set کنید. خلاصه کنم، اگر هدفتون ارسال فایل هستش، می تونید از یکی از Plugin های موجود برای اینکار استفاده کنید تا داده با فرمت مناسب به سرور ارسال بشه. در غیر اینصورت، دلیلی برای ارسال فرم با content type ای که ذکر کردید نمی بینم.

البته برای Serialize کردن اطلاعات فرم و ارسال اونها بصورت Ajax، می تونید از jQuery Form Plugin (http://jquery.malsup.com/form/) نیز استفاده کنید.

موفق باشید.

alimooghashang
شنبه 26 آذر 1390, 13:10 عصر
ajaxform رو الان تست میکنم ببینم چطوره
مرسی

ravand
یک شنبه 27 آذر 1390, 09:36 صبح
شما با html هم ميتوني اين كار رو انجام بدي:

<form target="myFrame" enctype='multipart/form-data' action="upload.php" method="post">
بعد از بسته شدن تگ </form> از كد زير استفاده كنيد:

<iframe name="myFrame" style="display: none;"></iframe>