PDA

View Full Version : سوال: فراخوانی تابع javascript از سمت سرور



dr_csharp
یک شنبه 05 آبان 1387, 11:16 صبح
سلام
همانطور که میدونید با استفاده از متد زیر امکان تعریف و فراخوانی یک تابع Javascript در سمت سرور محیا است :


ClientScript.RegisterStartupScript

سوال من اینه که چطور میتونم یک javascript function که قبلا درون بخش head از page قرار گرفته رو فراخوانی کنم ؟

kiosksoft
یک شنبه 05 آبان 1387, 11:28 صبح
دوست عزیز توی این تاپیک یه مثال ساده اوردم , همون چیزی که میخوای:

http://barnamenevis.org/forum/showthread.php?t=127376

dr_csharp
یک شنبه 05 آبان 1387, 11:35 صبح
دوست عزیز توی این تاپیک یه مثال ساده اوردم , همون چیزی که میخوای:

http://barnamenevis.org/forum/showthread.php?t=127376
تو این مثال شما یه Script رو Register کردین !
همونطور که گفتم : Script من قبلا تو page تعریف شده و نیازی به Register نداره و الان فقط میخوام فراخوانیش کنم !

kiosksoft
یک شنبه 05 آبان 1387, 11:41 صبح
دوست عزیز تست کنید . هم register میشه هم اجرا !!

dr_csharp
یک شنبه 05 آبان 1387, 12:06 عصر
دوست عزیز تست کنید . هم register میشه هم اجرا !!
بله میدونم !!!!
من که گفتم نمیخوام Register بشه ! میخوام فقط اجرا بشه !

mostafa_sgh
یک شنبه 05 آبان 1387, 12:19 عصر
سلام دوست عزیز
شما برای این کارمی تونید از تابع زیر استفاده کنید .
البته خدمتتنون عرض کنم هر کدام از این توابع کارائی خاص خودشون رو دارن .....



this.Page.ClientScript.RegisterClientScriptBlock(t his.GetType(),"RunFunction","yourFunction();",true);

dr_csharp
یک شنبه 05 آبان 1387, 12:56 عصر
سلام دوست عزیز
شما برای این کارمی تونید از تابع زیر استفاده کنید .
البته خدمتتنون عرض کنم هر کدام از این توابع کارائی خاص خودشون رو دارن .....



this.Page.ClientScript.RegisterClientScriptBlock(t his.GetType(),"RunFunction","yourFunction();",true);

شما اینحالت رو ببین :


string script = "<script type='text/javascript' language='javascript'> function al() {";
script += "alert('hey there');}<";
script += "/";
script += "script>";
ClientScript.RegisterStartupScript(typeof(string), "al();", script);

اصلا بیخیال اون حالت شدم !الان این کد کجاش مشکل داره ؟
function با نام alert رجیستر میشه ولی اجرا نمیشه !!

mahdi_farhani
یک شنبه 05 آبان 1387, 13:05 عصر
گر از Ajax استفاده میکنی ، به جای ClientScript باید از Scriptmanager استفاده کن
یک False هم آخرش بزاری بد نیست

mostafa_sgh
یک شنبه 05 آبان 1387, 13:08 عصر
شما اول از همه به نحوه نوشتن کد JS دقت کنید ......

نکات :

1 - در ساختن توابع نباید از نام توابع از پیش تعریف شده استفاده کنید .
2 - شما در این مثال بالا نیاز به دو مرحله کار داری : 1. ثبت 2. اجرا
3 - به اونی که با رنگ سبز مشخص شده بیشتر دقت کنید !!!

این هم اصلاح :



string script = "<script type='text/javascript' language='javascript'> function myAlert() {";
script += "alert('hey there');";
script += "}";
script += "</script>";
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "myAlert", script);
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "RunFunction", "myAlert();", true);


وقتی این کد رو اجرا کردید ، به View Source یه نگاهی بیاندازید تا از روند کار اطلاع پیدا کنید ...

dr_csharp
یک شنبه 05 آبان 1387, 13:08 عصر
گر از Ajax استفاده میکنی ، به جای ClientScript باید از Scriptmanager استفاده کن
یک False هم آخرش بزاری بد نیست
نه ، AJAX در کار نیست !!

dr_csharp
یک شنبه 05 آبان 1387, 15:55 عصر
اگه یه Script داشته باشی و فقط بخوای بصورت server side فراخوانیش کنی :


ClientScript.RegisterStartupScript(this.GetType(), "load", "YourScriptFunctionName();", true);