|
|
Rank: มือพระกาฬ
Groups: Member
Joined: 4/28/2009 Posts: 55 Location: CRU ChiangRai
|
การรัน JavaScript ใน asp.net นั้น
เป็นเพราะอะไร เวลาที่รีเทิร์นค่ามาแล้ว
ทำให้ ฟอร์มของ ASP.Net มันเปลี่ยนไป
วานผู้รู้ช่วยตอบให้หน่อยครับ
|
|
|
Rank: ฝ่ามืออรหัน
 Groups: Administration
Joined: 12/6/2007 Posts: 584
|
มันทำให้ form เปลี่ยนไปยังไงเหรอครับ ซึ่งผมยังไม่ค่อยเข้าใจคำถามเท่าไหร่นะครับเพราะผมลองสร้างและ
ทดสอบให้ javascript return ค่าดู form มันก็ไม่เปลี่ยนแปลงนะครับ
แต่ยังไงก็ลองมาดูจุดนี้กันก่อนคือเรืองของการ postback ซึ่งถ้าหน้า page นั้นมี web server control ที่มีการ Postback เช่น Button,LinkButton
จะทำให้ไฟล์ของหน้า page นั้นๆเมื่อเปิดดู Source (หลังจากรัน page นั้น) จะมีการสร้าง function ขึ้นมาตัวนึงชื่อ
__doPostBack ดังนี้
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
และคำสั่ง เรียก function ของ Buttonมีดังนี้
<input type="submit" name="Button1" value="Test" onclick="javascript:__doPostBack('Test','')" id="Button1" />
ซึ่งตรงคำสั่งสำหรับเรียก function นี้จะเป็นการเรียกfunction ของ javascript (__doPostBack) ขึ้นมาทำให้หน้า Page เกิดการ Postback ขึ้นนั่นหมายถึงว่า
ถ้ามีคำสั่งให้หน้า page แปลงแปลงอะไรก็จะเกิดขึ้นหลัง postback เช่นถ้าต้องการรับค่าเราก็สามารถ check ค่า
ใน pageload หลัง postback ได้ดังนี้
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string returnValueArg = Request["__EVENTARGUMENT"];
if (returnValueArg != null)
{
//คำสั่งต่างๆหลังจากรับค่าเข้ามาแล้ว
}
}
}
|
|
|
Rank: มือพระกาฬ
Groups: Member
Joined: 4/28/2009 Posts: 55 Location: CRU ChiangRai
|
ขอบคุณครับที่ตอบกระทู้
ผมมีข้อสงสัยอย่างนึงว่า
หากจะเขียน javascript ใน source code ของ asp นั้น การทำงานจะทำงานให้หน้าเดียวกันนั้น
แต่หากไปเขียนในส่วนที่เป็น .cs นั้น มีวิธีไหนที่สามารถทำให้ทำงานในหน้านั้นๆ ไม่ต้องเด้งไปหน้าขาวๆก่อนด้วยครับ
######ตัวอย่าง source code ของ asp ในหน้า webpage
<body bgcolor="#66ccff">
<form id="form1" runat="server" >
<script language="javascript">
function AlertTest()
{
alert("Test ");
}
</script><p>
<table background-color: #66CCFF;" title="Test">
<input type="button" name="btnLogout" id="btnLogout" value="Logout" onclick="JavaScript:AlertTest();"/>
</table>
หากเป็นแบบนี้จะสามารถทำงานในเพจๆเดียวได้
แต่หากเขียนในหน้า C# code(*.cs) ว่า
Response.Write("<script language='javascript'>);
Response.Write("alert('Test');");
Response.Write(</script>);
จะพบกว่า มันจะเด้งไปอีกหน้านึง
ช่วยแนะนำวิธีการเรียกใช้ javascript โดยการเขียนโค็ด แล้วไม่ให้เด้งไปหน้าอื่นด้วยครับ
|
|
|
Rank: ฝ่ามืออรหัน
 Groups: Administration
Joined: 12/6/2007 Posts: 584
|
ลองศึกษาจากบทความที่ผมเขียนครับ น่าจะตอบโจทย์ได้ไม่มากก็น้อย
http://www.codetoday.net/default.aspx?g=posts&m=6758
|
|
|
Rank: มือพระกาฬ
Groups: Member
Joined: 4/28/2009 Posts: 55 Location: CRU ChiangRai
|
ขอบคุณครับ สำหรับหลักการดีๆ
คือว่า ถ้าเป็นการทำงานแบบว่า ทำงานในหน้าของ C# ไปเรื่อยๆ แล้วหากว่ามันติด Error แล้วให้เด้งเป็น javascript
ซึ่งตรงนี้แหละ ที่มันจะเด้งหน้าใหม่ จะมีอีเวนท์ไหนที่แบบว่า คลิก Button ปุ๊บ
มันจะทำงานในส่วนของ C# (หน้า .cs) ไป แล้วพอมันเกิด Error มันก็จะเด้งเป็น JavaScript แบบนี้น่ะครับ
|
|
|
|
Guest
|