PDA

View Full Version : حرفه ای: مشکل ایجکس



alireza_s_84
جمعه 20 شهریور 1388, 18:07 عصر
سلام دوستان:
با استفاده از ایجکس یک فرم ASp.net رو پست میکنم به اینصورت که مقدار تمامی فیلدهای فرم رو میخونم و یه رشته میسازم و میفرستم سمت سرور با متد Post. (همون کارهای تکراری ایجکس)
اما این خطا رو
The state information is invalid for this page and might be corrupted.

بر میگردونه سرور گرامی.
کلی زیر رو کردم MSDN و سایتهای خارجی رو علت ViewSate اما چه جوری برطرف شدنش رو هیچکی نگفته .
یکی به داد ما برسه تا نتیجه کار رو که یه کتابخونه ایجکس هست رو واسه همه بذارم
فقط همین مشکل رو دارم.

alireza_s_84
جمعه 20 شهریور 1388, 22:00 عصر
دوستان عزیز ما این همه مشکل بر و بچه ها رو برطرف میکنیم حالا که خودمون گیر کردیم کسی نیست به دادمون برسه؟؟؟
اساتید عزیز ما رو دریابید کار گره خورده مددی کنید ...

Behrouz_Rad
جمعه 20 شهریور 1388, 22:27 عصر
مقدار تمامی فیلدها رو می خونی؟ ViewState هم یک فیلد مخفی در صفحه است. به احتمال زیاد دو تا فیلد VIEWSTATE__ به سرور ارسال میشه و سرور فکر می کنه که ViewState دستکاری شده و اون رو طبیعتاً به عنوان یک حمله تشخیص میده.
کدهایی که برای خوندن فیلدها نوشتی رو اینجا قرار بده.

موفق باشید.

alireza_s_84
شنبه 21 شهریور 1388, 01:25 صبح
مرسی بهروز جان چک میکنم حتما

alireza_s_84
شنبه 21 شهریور 1388, 01:57 صبح
آقای راد چک کردم فقط موارد فیلدهای زیر رو میفرستاد:



__VIEWSTATE
__EVENTVALIDATION
__EVENTTARGET
__EVENTARGUMENT



یه شرط گذاشتم که __VIEWSTATE فرستاده نشه باز مشکل حل نشد.
یه شرط گذاشتم که __EVENTVALIDATION فرستاده نشه گفت EVENTVALIDATION سمت سرور فعاله غیر فعالش کن ، غیر فعال کردم مشکلی نداشت اما Event مربوط به Button که کلیک شده اجرا نشد.
خلاصه نمیدونم چطور Submit فرم رو با ایجکس نمونه سازی کنم که گیر نده
اینم کد جاوایی که باهاش رشته ارسالی رو میسازم(متدم هم Post هستش)



if(this.UseSubmitBehavior==true)
{
var FORM = document.forms[0];
XmlHttpObject.setRequestHeader('Content-length',FORM.length);
XmlHttpObject.setRequestHeader("Connection", "close");
for(i=0; i<FORM.length; i++)
{
try
{
var FormField = FORM.elements[i].name;
var FormFieldValue = FORM.elements[i].value;
if(!Parameters) Parameters = FormField + "=" + encodeURI(FormFieldValue) + "&";
else Parameters += FormField + "=" + encodeURI(FormFieldValue) + "&";
}
catch(e){/* Field Can Not Added */}
}
}

alireza_s_84
شنبه 21 شهریور 1388, 01:59 صبح
if(this.UseSubmitBehavior==true)


مربوط به خصوصیتی از کلاسمه که اگه true باشه از حالت Submit فرم استفاده میکنم و گرنه حالت عادی درخواستم رو میفرستم.
البته الان یه نگاهی به کدهای جاوای UpdatePanel میندازم شاید بفهمم مشکل کجاست.
التماس دعا

alireza_s_84
شنبه 21 شهریور 1388, 06:56 صبح
بهروز جان سلام
مشکل رو پیدا کردم به جای encodeURI باید از encodeURIComponent استفاده میکردم علتش هم خودت بهتر میدونی . کدهای نهایی اینطور شد



function EncodeData(Parameter)
{
if (encodeURIComponent)
{
return encodeURIComponent(Parameter);
}
else
{
return escape(Parameter);
}
}



حالا دیگه اون پیغام رو نمیده اما مشکلی اصلی هنوز سرجاشه اونم اینکه هنوز Event اون Button که سبب Submit شده رو اجرا نمیکنه اگه ممکنه همفکری کنید یه جوری حلش کنم
منتظر هستم بهروز جان

مهران موسوی
شنبه 21 شهریور 1388, 13:39 عصر
دوست عزيز سلام .

اگه Button شما در Update Panel قرار داره خب عدم Submit شدن صفحه طبيعي هست . براي اينكه صفحه submit بشه يه نگاهي به مشخصه ي Trigger مربوط به Update Panel بنداز و يكم راجع بهش جستجو كن .

يا حق ...

alireza_s_84
شنبه 21 شهریور 1388, 18:07 عصر
دوست عزيز سلام .

اگه Button شما در Update Panel قرار داره خب عدم Submit شدن صفحه طبيعي هست . براي اينكه صفحه submit بشه يه نگاهي به مشخصه ي Trigger مربوط به Update Panel بنداز و يكم راجع بهش جستجو كن .

يا حق ...

دوست عزیز متوجه نشدین کی از UpdatePanel استفاده کرده؟
مشکل چیز دیگه ای هست
موفق باشید

alireza_s_84
شنبه 21 شهریور 1388, 22:08 عصر
اساتید Ajax یکی پیدا نمیشه شبیه سازی Submit کردن فرم رو بدونه؟

Behrouz_Rad
یک شنبه 22 شهریور 1388, 14:43 عصر
Demo قرار بده. Demo = یک فایل zip که حاوی صورت مسئله است.

موفق باشید.

alireza_s_84
یک شنبه 22 شهریور 1388, 15:24 عصر
سلام آقا بهروز
مشکل رو دیشب حل کردم ایرادم این بود که تمام فیلدهای فرم رو بصورت نام/مقدار میفرستادم واسه همین ایونتها رو اجرا نمیکرد.
مرسی که به یادمون بودی

Behrouz_Rad
یک شنبه 22 شهریور 1388, 15:43 عصر
اوکی! نام برخی فیلدها برای ASP.NET مفهوم خاصی داره و ارسال اونها به صورت غیر معمول باعث واکنش نسبت به پذیرش اونها میشه ;)

موفق باشید.