PDA

View Full Version : ارسال اطاعات با متد post در xmlhttp با asp



programset
جمعه 26 دی 1393, 00:54 صبح
سلام
ار آنجا که زمانی برام سوال بود و امروز فهمیدم گویا هنوز هم برخی عزیزان تازه کار و حتی با تجربه ترها با این موضوع مشکل دارند تصمیم گرفتم مختصری در مورد ارسال و دریافت اطلاعات با ajax در asp توضیح بدم

اول بریم سراغ کد جاوا اسکریپتمون که من برای این کار یک تابع نوشتم که هرجا نیاز بود اون رو فراخوانی می کنم
فرض کنید قراره اطلاعاتی شامل : نام ، نام خانوادگی و سن فردی رو از textbox هایی در یک صفحه ی html به سرور ارسال و در اونجا ذخیره کنیم ،
id تکس باکس ها رو به ترتیب : txtName , txtFamily, txtAge گذاشتم
مثلا یک دکمه هم داریم با آیدی btnOk
فرض کنیم کاربر تکس باکس هارو پر کرده و روی دکمه کلیک می کنه .. خب با کلیک کاربر دوتا اتفاق می افته .. ابتدا مقادیر تکس هارو میگیریم و در نهایت با تابعی که در ادامه خواهیم نوشت ارسال میکنیم و سپس در ادامه در صفحه Data.aspx سمت سرور دریافت میکنیم
ابتدا رشته ی ارسال رو به این شکل میسازیم :

$("#btnOk").click(function(){
var send = "Name=" + $("#txtName").val() + "&Family=" + $("#txtFamily").val() + "&Age=" + $("#txtAge").val() ;
SendToServer(send);
})


خب در ادامه تابع ارسال SendToServer(send) را مینویسیم

var responce;
var flag = false;
function SendToServer(parameter)
{
var XmlHttp;
if (Window.XmlHttpRequest)
{
XmlHttp=new XmlHttpRequest();
}
else
{
XmlHttp=new ActiveXObject("Microsoft.XmlHttp");
}
XmlHttp.open("POST", "Data.aspx" , true);
XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
XmlHttp.send(parameters);
XmlHttp.onreadystatechange = function () {
if (XmlHttp.readyState == 4 && XmlHttp.status == 200) {
response = XmlHttp.responseText;
if (response.substr(0, 1) == "1")
flag = true;
}
}
}



و در ادامه در رویداد Page_Load صفحه data.aspx باید کد زیر را وارد کنیم:

SqlConnection con = new SqlConnection("your connection string");
protected void Page_Load(object sender, EventArgs e)
{
int sucsses;
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "your Insert StoredProcedure";
cmd.Parameters.AddWithValue("@name",Request.Form["Name"]);
cmd.Parameters.AddWithValue("@family", Request.Form["Family"]);
cmd.Parameters.AddWithValue("@Age", Request.Form["Name"]);
cmd.Connection = con;
con.Open();
sucsses = cmd.ExecuteNonQuery();
Response.Write(sucsses.ToString());
con.Close();
}


دقت کنید بعد از insert کردن مقادیر در دیتابیس ، کد سی شارپ درون رویداد data.aspx مقدار عددی 1 را بر میگرداند که تابع جاوا اسکریپت ما توسط متغیر responce آن را دریافت کرده و اگر مقدارش 1 بود متغیری از نوع flag را true میکند
شما در ادامه می توانید با استفاده از setInterval دائما مقدار flag را بررسی کنید و هروقت true شد .. مثلا یک پیغام به کاربر نمایش دهید
به همین شیوه می توانید از سرور دیتا هم دریافت کنید

در ادامه اگر سوالی بود اگر مجالی داشتم در خدمتم