PDA

View Full Version : سوال: ذخیره پیام بدون رفرش صفحه



رضا قربانی
جمعه 19 فروردین 1390, 21:48 عصر
سلام دوستان و خسته نباشید

یه قسمتی از برنامه به مشکل بر خورد که نباید صفحه رفرش بشه.

من یه اطلاعاتی رو به صورت پست با یک دکمه ارسال می کنم (خیلی ساده)

و بعد از یه طرف دیگه پستش رو دریافت می کنم و insert در بانک (خیلی راحت)

ولی این روش وقتی روی دکمه کلیک می کنید صفحه اطلاعات پست رو ارسال می کنه و یکبار رفرش می شه که من نمی خوام این عمل انجام بشه .

من زیاد از جاوا سر در نمیارم و ممنون می شم چاره ای به ما ابلاغ کنید.

با تشکر

hamid-nic
جمعه 19 فروردین 1390, 23:15 عصر
سلام
دوست عزیز باید از Ajax استفاده کنید .
توی سایت یه جست و جویی بزنید .
موفق باشید .

رضا قربانی
شنبه 20 فروردین 1390, 00:01 صبح
سلام
دوست عزیز باید از Ajax استفاده کنید .
توی سایت یه جست و جویی بزنید .
موفق باشید .
جست و جوی زدم .متاسفانه جستجوی این سایت یه کم زیادی روغن اضافه می کنه .
می دونم با جاوا و آجاکس یا جی کوئری می شه اما ممنون می شم با نمونه کد کمکمون کنید

mohsen24000
شنبه 20 فروردین 1390, 11:31 صبح
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});

sargardoon
شنبه 20 فروردین 1390, 16:35 عصر
اگر این اطلاعات رو با استفاده از دکمه submit میفرستی بهتره مقدار را false بذاری. به مثالی که نوشتم توجه کن، اگر مقدار true باشه صفحه رفرش میشه و به صفحه که آدرس دادم میره،


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#submit").click(function() {
alert ("Hi");
return false;
});
});
</script>
</head>

<body>
<form action="send.php" method="post">
<input type="text" name="name" id="name" />
<input type="submit" value="submit" id="submit" />
</form>
</body>
</html>

حالا میتوانی کارهایی که میخواهی انجام بدهی را بجای اون ALERT بذاری.

رضا قربانی
یک شنبه 21 فروردین 1390, 12:31 عصر
ببین برای مثال من یک صفحه به نام index.php دارم و یک اطلاعاتی را به صورت پست به همین index.php ارسال می کنم و می اندازم داخل یک متغیر !!! و این متغیر رو insert می کنم در بانک.
بعدشم حالا من کجا باید شرط ها و دستورات sql رو بنویسم و در بانک ذخیره کنم ؟

mohsen24000
یک شنبه 21 فروردین 1390, 22:53 عصر
اگر قراره از همین صفحه به همین صفحه post کنی اون هم توسط ajax ، دیگه نمیتونی که با php کاری از پیش ببری و اطلاعات رو در بانک ذخیره کنی!
ناچارا باید ذخیره اطلاعات را بسپاری به یک فایل php دیگه که اطلاعات توسط ajax به اون پست میشه!

رضا قربانی
دوشنبه 22 فروردین 1390, 01:36 صبح
اگر قراره از همین صفحه به همین صفحه post کنی اون هم توسط ajax ، دیگه نمیتونی که با php کاری از پیش ببری و اطلاعات رو در بانک ذخیره کنی!
ناچارا باید ذخیره اطلاعات را بسپاری به یک فایل php دیگه که اطلاعات توسط ajax به اون پست میشه!

خب من الان یک فرم دارم و به حرف شما گوش می دم و در یک فایل دیگه ذخیره می کنم . حالا بگو چی کار کنم ؟ چطوری با آژاکس فرم رو ارسال کنم ؟ فرض کن اون صفحه من ADD.php هست و اینم فرم من



<form action="ADD.php" method="post" enctype="multipart/form-data">
<center><textarea name="text" cols="60" rows="7" wrap="soft"></textarea></center>
<input name="Mehr" type="hidden" value="'.$row["name"].' "/>
<input name="email" type="hidden" value="'.$row["email"].'"/>
<center><input type="submit" value="ارسال برای مدیر سایت" style="font:12px tahoma;" /></center>


</form>

Mr.Moghadam
دوشنبه 22 فروردین 1390, 02:45 صبح
خب من الان یک فرم دارم و به حرف شما گوش می دم و در یک فایل دیگه ذخیره می کنم . حالا بگو چی کار کنم ؟ چطوری با آژاکس فرم رو ارسال کنم ؟ فرض کن اون صفحه من ADD.php هست و اینم فرم من



<form action="ADD.php" method="post" enctype="multipart/form-data">
<center><textarea name="text" cols="60" rows="7" wrap="soft"></textarea></center>
<input name="Mehr" type="hidden" value="'.$row["name"].' "/>
<input name="email" type="hidden" value="'.$row["email"].'"/>
<center><input type="submit" value="ارسال برای مدیر سایت" style="font:12px tahoma;" /></center>


</form>

از جی کوئری به شکل زیر استفاده کن.
البته آی دی فرم رو هم form1 بذار




$.post("add.php", $('#form1).srialize() , function(data)
{
$('.result').html(data);
});

data مقادیر برگشتی از صفحه add.php

رضا قربانی
دوشنبه 22 فروردین 1390, 19:49 عصر
ببینم فایلی ، چیزی نباید فراخوانی کنم ؟ مثلا jquery.js ؟
توی کدت یک تک کدیشن کم گذاشتی

data مقادیر برگشتی از صفحه add.php یعنی چی ؟




من وقتی رو دکمه کلیک می کنم و اطلاعات رو پست ارسال می کنم صفحه به کل هدایت می شه به ADD.php که من نمی خوام این عمل انجام شه (یعنی صفحه همون جا باقی بمونه و به جایی هدایت نشه ولی اطلاعات پست ارسال بشه! )


الان این کاری که گفتید رو انجام دادم . هیچ عملی انجام نمی شه و انگار که اصلا کاری انجام ندادم.

ahmad.khaliq
دوشنبه 22 فروردین 1390, 23:05 عصر
ببین برای مثال من یک صفحه به نام index.php دارم و یک اطلاعاتی را به صورت پست به همین index.php ارسال می کنم و می اندازم داخل یک متغیر !!! و این متغیر رو insert می کنم در بانک.
بعدشم حالا من کجا باید شرط ها و دستورات sql رو بنویسم و در بانک ذخیره کنم ؟


کد زیر رو در هدر صفحه قرار بده:


<script language="javascript" type="text/javascript">
var http = false;
if(navigator.appName == "Microsoft Internet Explorer")
{
http = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
http = new XMLHttpRequest();
}

function ajax(url,params,method,div)
{
http.abort();
http.open(method, url, true);
if(method=="POST")
{
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
}
http.onreadystatechange=function() {
if(http.readyState == 4) {
document.getElementById(div).innerHTML = http.responseText;
}
}
http.send(params);
}

</script>



دکمه ای که برای سابمیت گذاشتی به صورت زیر باشه:



<input onclick="javascript:ajax(url,params,method,div); return false;" type="submit" name="button" id="button" value="ثبت سفارش" />

دقت کن که پارامترهای تابع ajax رو که در دکمه گذاشتی درست تنظیم کنی
url: آدرس صفحه ای که اطلاعاتت رو ثبت میکنه
params: پارامترهایی که باید ارسال بشه. مثلا:
name=document.getElementByID('name').value
(خط بالا، مقداری که در فیلد name کاربر وارد کرده بوده رو به پارامتر name میسپاره)
method: نوع ارسال داده ها POST یا GET
div: اسم المنتی که میخوای ریسپانس صفحه داخلش قرار بگیره


اگر میخوای اطلاعات رو در همین صفحه ذخیره کنی و مجبور نشی از 2 فایل اسفاده کنی، کافیه در بالای صفحه کد زیر رو بزاری


<?php
if(isset($_GET['save']))
{
// save data
}
?>
دقت کن که باید آدرس تابع ajax رو به صورت زیر بنویسی index.php?save=1

ahmad.khaliq
دوشنبه 22 فروردین 1390, 23:08 عصر
اگه باز هم نتونستی تنظیمش کنی، کدی که نوشتی رو بفرست تا برات اصلاحش کنم