PDA

View Full Version : یک مشکل با Ajax



jannati
چهارشنبه 25 مرداد 1385, 09:24 صبح
به نام هستی بخش یکتا
دوستان سلام
مشکل من اینه که یک برنامه کوچیک نوشتم که با تغییر گزینه ها در dropdownlist کد مربوط به اون گزینه در textboxکنارش وارد میشه.حالا اینکار رو با استفاده از Ajaxانجام دادم صفحه در هر انتخاب رفرش نشه.حالا وقتی یک پروژه جدا باز میکنم و این برنامه را وارد میکنم درست کار میکنه و مقدار درست برمیگردونه.اما وقتی دقیقا همون کد ها رو به یکی از برنامه هایی که قبلا کار کردم اضافه میکنم مقدار nullبرمیگردونه.یعنی تابع و کدها اجرا میشه.فقط مقدار کد بازگشتی nullمیشه.باتوجه به اینکه در webApplicationهای دیگه ای که دارم درست کار میکنه.کسی تجربه ای در زمینه داره؟ممنون میشم کمک کنید.

jannati
چهارشنبه 15 شهریور 1385, 14:39 عصر
دوستان کسی تجربه ای در این زمینه نداره؟
در webapplicationای که درست کار نمیکنه errorزیر رو میده :


Http request failed error with status:500 500

البته این errorرا از طریق دستور


alert(response.error);

پیدا کردم.

manager
چهارشنبه 15 شهریور 1385, 19:40 عصر
همون طور که می دونید کد خطای 500 برای Internal Server Error هست. احتمالا برنامه وبتون مشکل داره ...
1- مطمئن بشید رفرنس های برنامه جاوااسکریپتتون صحیح هستند.
2- مطمئن بشید برنامه هاتون هم اجاکس و هم اون برنامه ی قدیمیتون درست کار می کنه.(البته جدا از هم)

اگر اطلاعات بیشتری در دسترس باشه کمک دقیق تر می تونم بهتون بکنم..

jannati
یک شنبه 19 شهریور 1385, 10:43 صبح
به نام یکتا هستی بخش مهربان
ممنون که راهنمایی کردید.برنامه هام به صورت جدا از هم درست کار میکنند.من دقیقا کدهای وب اپلیکیشنی که جاوا در اون درست کار میکنه رو در برنامه اصلی خودم قرار دادم.همه چیز در برنامه اصلی درست کار میکنه بجز کاری که اجاکس باید انجام بده.یعنی بدون رفرش شدن یک تکس باکس پر بشه....
منظورتون از اطلاعات بیشتر چیه؟من کدهامو دقیقا اینجا قرار میدم....
بازم از توجهتون ممنونم

jannati
یک شنبه 19 شهریور 1385, 10:53 صبح
کد HTMLبرنامه :


<%@ Page language="c#" Codebehind="testajax.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.testajax" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
<head>
<title>testajax</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript" src="ajax/common.ashx"></script>
<script language="javascript" src="ajax/WebApplication2.testajax,WebApplication2.ashx"></script>

</head>
<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">
<script >

var response = &#160;testajax.ServerSideAdd(100,99, ServerSideAdd_CallBack);
//&#160; alert(response.value);&#160; &#160; &#160;
&#160;
&#160; function ServerSideAdd_CallBack(response){
&#160; &#160;if (response.error != null){&#160;
alert(response.error);
return;
&#160;}
&#160;&#160;alert(response.value);
&#160;&#160;}
</script>
</form>

</body>
</html>



قسمت codebehinde


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication2
{
/// <summary>
/// Summary description for testajax.
/// </summary>
public class testajax : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
[Ajax.AjaxMethod]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}


البته این کدها در یک وب اپلیکیشن دیگه درست کار میکنه و با اجرای صفحه یک alertبه مقدار 199نمایش داده میشود.درضمن مقادیر web.configهم ست شده و ajax.dllرا هم به پروژه اضافه کرده ام.

majid_cs
جمعه 28 اردیبهشت 1386, 22:46 عصر
سلام. من دقیقا جواب مشکل شما رو نمیدونم ولی یه پیشنهاد دارم. بهتره برای استفاده از ajax از یکی از فریم ورک های آماده اون استفاده کنید. یکی از بهترین فریم ورک ها magicajax هستش که مجانیه و براحتی میتونید از سایتش دانلود کنید.
طرز کارش هم اینطوری هست که بعنوان refrence به application اضافه میشه. بعد یه کنترل به اسم AjaxPanel در اختیارتون قرار میده. حالا شما هر کنترلی را که میخواهید بصورت Ajax کار کنه میندازید تو این پنل و به بقیه کارها کاری ندارید، به همین سادگی.

jannati
یک شنبه 30 اردیبهشت 1386, 08:27 صبح
به نام یکتا هستی بخش مهربان
دوست عزیز ،ممنون از پاسخت...این مشکل من حل شد.حالا یک مشکل دیگه دارم.من با استفاده از جاوا کد شهری را که در کمبوباکس انتخاب میشه در یک تکس باکس قرار میدهم.با تغییر کمبوباکس این کد هم در تکس باکس تغییر میکنه.اما وقتی کاربر کلید ذخیره را فشار میدهد،همان کد اولی ذخیره میشود.با اینکه در تکس باکس کد جدید نمایش داده میشود.چـــــــــرا؟

jasadeghi
یک شنبه 30 اردیبهشت 1386, 08:46 صبح
سلام دوست عزیز
اگر کد رو بگذاری بهتر میشه جوابت رو داد ولی به احتمال زیاد شما داری مقدار اولیه تکس باکست رو در page load صدا می زنی و زمانی که کلید ذخیره رو کاربر می زنه page load مقدار تکس باکس رو به مقدار اولیه تغییر میده قبل از اینکه اطلاعات در بانک ذخیره بشه.

با آرزوی موفقیت

jannati
دوشنبه 31 اردیبهشت 1386, 09:49 صبح
سلام دوست عزیز
ممنون از راهنماییت.حق با شماست.وقتی مقادیر اولیه را که در pageloadداده بودم مارک کردم درست کار کرد....
حالا سوالم اینجاست که پس این مقادیر اولیه را کجا باید نمایش بدهم.چون کاربر ممکنه از همان مقادیر اولیه استفاده کنه و ممکنه بخواد مقدار را تغییر بده....؟