PDA

View Full Version : مشکل در اجرای Ajax بدون Ajax.



hdv212
پنج شنبه 26 مهر 1386, 08:44 صبح
سلام و خسته نباشید
با توجه به مقاله ی بهروز عزیز، من این تکنیک رو خواستم پیاده کنم ولی نمیدونم چرا اول صفحه با error لود میشه، ثانیا اون کاری رو هم که من میخوام انجام نمیده، من یه button دارم و یه label که میخوام وقتی روی دکمه کلیک شد، label مورد نظر تاریخ جاری رو نمایش بده، اینم کد سی شارپ :

public partial class Default6 : System.Web.UI.Page,ICallbackEventHandler
{
protected string strReturn = null;
protected void Page_Load(object sender, EventArgs e)
{
string result = ClientScript.GetCallbackEventReference(this, null, "RecieveDataFromServer", "ValidateF");
if(!ClientScript.IsClientScriptBlockRegistered("DoServerAction"))
{
string serverScript = @" function DoServerAction(null,validateF) { " + result + "}";
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "DoServerAction", serverScript, true);
}
}

public string GetCallbackResult()
{
DateTime dt = DateTime.Now;
return dt.ToShortDateString();
}

public void RaiseCallbackEvent(string eventArgument)
{
//if (!string.IsNullOrEmpty(eventArgument))
// strReturn = eventArgument;
//else
// strReturn = eventArgument;
}
}
اینم کد مربوط به source صفحه مورد نظرم :

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script>
function GetID()
{
var valueID = document.getElementById("lbl").value;
DoServerAction(valueID,'');
}

function RecieveDataFromServer(strData)
{

document.getElementById("lbl").innerText = strData;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lbl" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="GetID();return false" />
</div>
<div id="myDiv" runat="server"></div>

</form>
</body>
</html>
مرسی

hdv212
پنج شنبه 26 مهر 1386, 15:21 عصر
کسی نبود ؟

asgari2005
پنج شنبه 26 مهر 1386, 17:17 عصر
من فکر کنم مشکل در Button هست شما با Button از نوع Html استفاده کنید و در رخداد کلیک فانکشن مورد نظر را فراخوانی کنید
ضمنا error که می دهد را قرار دهید تا ببینم چی می گه

hdv212
پنج شنبه 26 مهر 1386, 18:02 عصر
من فکر کنم مشکل در Button هست شما با Button از نوع Html استفاده کنید
یعنی فقط باید از button های html استفاده کنیم ؟ راهی نداره از کنترل های خود دات نت استفاده کنیم ؟

ضمنا error که می دهد را قرار دهید تا ببینم چی می گه
پیغامی که نشون نمیده ولی همون پایین Status Bar مربوط به مرور گر مینویسه :

Done! But with error

SalarSoft
پنج شنبه 26 مهر 1386, 18:32 عصر
مشکل اصلی شما تفاوت نام های validateF با ValidateF است. جاوا اسکریبپت به حروف بزرگ و کوچک حساس است.

و همچنین باید از کنترل Html استفاده کنید.

من کد شما رو اینطوری اصلاح کردم.


<script language="javascript">
function GetID()
{
var valueID = document.getElementById("lbl").innerHTML;
DoServerAction(valueID);
}

function RecieveDataFromServer(strData)
{
document.getElementById("lbl").innerHTML = strData;
}
</script>




<input onclick="GetID()" type="button" value="DoIT" />






protected void Page_Load(object sender, EventArgs e)
{
string result = ClientScript.GetCallbackEventReference(this, null, "RecieveDataFromServer", "validateF");
if (!ClientScript.IsClientScriptBlockRegistered("DoServerAction"))
{
string serverScript = @" function DoServerAction(validateF) { " + result + "}";
ClientScript.RegisterClientScriptBlock(this.GetTyp e(), "DoServerAction", serverScript, true);
}
}

hdv212
پنج شنبه 26 مهر 1386, 19:35 عصر
SalarSoft عزیز، ممنونم، درست شد، مرسی .

mehrdad201
جمعه 27 مهر 1386, 13:52 عصر
همین جا از مهندس راد عزیز تشکر می کنم

این مقالشون خیلی به من کمک کرد.