PDA

View Full Version : سوال: عدم اجرای تابع بعد از خواندن با آژاکس



MS.Worm
چهارشنبه 29 خرداد 1392, 15:31 عصر
سلام و خسته نباشید

من در یه صفحه HTML دوتا تکس باکس دارم و یک باتون.

حالا توسط جی کوئری و آژاکس نام کاربری و کلمه عبور رو به یک صفحه php ارسال میکنم. میخوام اگر درست بود که یه کاری انجام بده. که خوب به خوبی انجام بده اما وقتی درست نبود دقیقا همون کدهای html یعنی دوتا تکس باکس و یک باتون رو واسم پرینت کنه رو صفحه.

تا اینجا همه چی به خوبی انجام میشه. یعنی وقتی اطلاعات ارسال شده اشتباه باشه، از طرف php همون کدهای html ارسال میشه دوباره صفحه لوگین ساخته میشه اما مشکل اینجاس که وقتی صفحه ایجاد میشه دیگه کد کلیک باتون که با جی کوئری نوشتم کار نمیکنه.

مشکل چیست؟

با تشکر

hakan648
چهارشنبه 29 خرداد 1392, 21:39 عصر
سلام

وقتی دارید با ایجکس کار میکنید، دیگه صحیح نیست که بیاید مجدد فرم رو بسازید، چون فرم وجود داره و چیزی که باید تغییر بکنه، میتونه فقط یک پیغام باشه!
اینکه فرم مجدد ارسال بشه از طرف سرور ، زمانی مناسب خواهد بود که صفحه بصورت کامل پست بشه.

این از میزان صحت این کار، در مورد کار نکردن دکمه باید عرض کنم که چون دکمه ی شما مجدد به صفحه اضافه شده، رویداد هایی که به دکمه متصل بودند، دیگه متصل نیستند. یعنی دکمه ای که رویداد کلیک بهش اضافه شده بوده دیگه در صفحه وجود نداره و دکمه ای که جدید اضافه شده یک دکمه ی دیگست!
البته برای این مورد، جیکوئری متدی داره به اسم live (http://api.jquery.com/live/) که این مشکل رو برطرف میکنه.( رویداد مورد نظر به عناصر تعیین شده ای که چه الان وجود دارند چه بعدا اضافه خواهند شد، اضافه میکنه! )

$("#mybutton").live("click", function(){ alert("Goodbye!"); });

با این وجود، همچنان روشی که شما در پیش گرفتید خیلی صحیح نیست.

jalil_gh
چهارشنبه 29 خرداد 1392, 22:10 عصر
البته باید به یاد داشته باشید که متد live تو نسخه 1.9 به بعد حذف شده و بهتره به جای اون از متد on استفاده کنید.

MS.Worm
پنج شنبه 30 خرداد 1392, 07:54 صبح
ممنون بابات پاسخ ها