PDA

View Full Version : مشکلاتی هنگام استفاده از ajax jquery



maryam_272
دوشنبه 04 مهر 1390, 11:14 صبح
سلام
من توی یک صفحه یک سری لینک قرار دادم که با کلیک روی هر کدوم با ajax jquery یک user control رو فراخوانی می کند تا اینجای کار مشکلی ندارم اما در صفحه ارتباط با ما یک فرم قرار دادم که البته با کد اینکار رو کردم حالا وقتی فرم رو تو صفحه می ذارم و روی دکمه کلیک می کنم توابع مربوط به فرم اجرا نمیشه میشه به من بگید برای فرم هایی که با ajax تو صفحه قرار می گیرن چکار باید بکنیم تا توابع مربوط اجرا بشن
2- من توی بعضی از صفحات می خوام از فخخمفهح استفاده کنم توابع jquery رو درست گذاشتم و وقتی بصورت دستی توی صفحه میزارم درست نمایش میده اما وقتی به وسیله ajax فراخوانی میشه دیگه tooltipe درست کار نمی کنه کسی می دونه مشکل کارم از چیه؟

maryam_272
سه شنبه 05 مهر 1390, 09:43 صبح
یعنی تا حالا کسی با این مشکل برخورد نکرده که هنگام استفاده از ajax jquery با استفاده از user control توابع و کتابخانه های jquery کار نمی کنن
مشکل من دقیقا از این موضوعه

Saman Hashemi
سه شنبه 05 مهر 1390, 11:01 صبح
وقتی شما نه کدی میزارید نه مثالی چجوری انتظار دارید دوستان بتونن کمکتون کنند...!

maryam_272
سه شنبه 05 مهر 1390, 12:04 عصر
ببخشید که کامل توضیح ندادم فکر می کردم ایراد شایعی باشه
حالا من یک مثال ساده می زنم من یک صفحه به اسم test.aspx دارم که کدهای html اون به این شکل هست

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<head runat="server">
<link href="Styles/reset.css" media="all" rel="stylesheet" type="text/css" />
<link href="Styles/style.css" media="all" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.5.2.js" type="text/javascript"></script>
<script src="Scripts/mobilyblocks.js" type="text/javascript"></script>
<script src="Scripts/script.js" type="text/javascript"></script>
<script src="Scripts/jquery.transform-0.9.3.min.js" type="text/javascript"></script>
<script src="Scripts/superfish.js" type="text/javascript"></script>
<script src="Scripts/atooltip.jquery.js" type="text/javascript"></script>
<script src="Scripts/jScrollPane.js" type="text/javascript"></script>
<script src="Scripts/jquery.mousewheel.js" type="text/javascript"></script>
<script src="Scripts/contact-form.js" type="text/javascript"></script>
<script src="Scripts/jquery.prettyPhoto.js" type="text/javascript"></script>
<script language=javascript>
$(document).ready(function () {

$('#ErtebatBaMa').click(function () {
var ControlName = "Test.ascx";
$.ajax({
type: "POST",
url: "Test.aspx/Result",
data: "{ controlName:'" + ControlName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
// $.unblockUI();
// alert(response.d);
$('#result').html(response.d);
},
error: function (msg) {
// $.unblockUI();
alert(msg);
$('#result').html(msg.d);
}
});
});
});
</script>
<title></title>
<style type="text/css">
.style1
{
width: 34px;
}
.style2
{
width: 10px;
}
</style>
</head>
<body >
<div style="background-color:Black;">
<form id="form1" runat="server">
<div >
<table >
<tr>
<td class="style1">
&nbsp;
<div id="ErtebatBaMa" style=" float:left ">ارتباط با ما</div>
</td>
<td class="style2"></td></tr></table>
<br />
<div id="result" ></div>
</div>
<div>
<div class="scroll-pane" style="width:300px; height:300px;">
<a class="normaltip" href="#" title="به سایت گروه تبلیغاتی تپش خوش آمدید."> <img src="Images/ForTemplateSite/page5_img1.png"/></a>
به صفحه <br /> بیلبورد <br /> خوش <br /> امدید<br /> ش <br />س<br />ی<br />ب<br />ب<br />ل<br />ت<br /> ش <br />ظ <br /> ط <br /> ز<br /> ر<br />
ظ<br />ز<br />ر<br />ذ<br />د<br />س<br />ط<br />ظ<br />
</div>
</div>
</form>
</div>
</body>
</html>


من توی این صفحه یک div دارم که وقتی روی اون کلیک می کنم یک سری اطلاعات در div result نمایش می دهد در قسمت پایین هم همون اطلاعاتی رو که توی دایو result می خوام نمایش بدم رو بصورت html تو صفحه گذاشتم
در code behind هم این کدها رو نوشتم

Imports System.Web.Services
Imports System.IO
Public Class Test
Inherits System.Web.UI.Page


<WebMethod()>
Public Shared Function Result(ByVal controlName As String) As String
Return Results(controlName)
End Function

Public Shared Function Results(ByVal controlName As String) As String
Try
Dim page As New Page()
Dim userControl As UserControl = CType(page.LoadControl(controlName), UserControl)
userControl.EnableViewState = False
Dim form As New HtmlForm()
form.Controls.Add(userControl)
page.Controls.Add(form)

Dim textWriter As New StringWriter()
HttpContext.Current.Server.Execute(page, textWriter, False)
Return textWriter.ToString()
Catch ex As Exception
Return ex.ToString()
End Try
End Function


End Class

و یک user control هم با نام Test.ascx ایجاد کردم که کدش به این صورت

<div>
<div class="scroll-pane">
<a class="normaltip" href="#" title="به سایت گروه تبلیغاتی تپش خوش آمدید."> <img src="../../Images/ForTemplateSite/page5_img1.png"/></a>
به صفحه <br /> بیلبورد <br /> خوش <br /> امدید<br /> ش <br />س<br />ی<br />ب<br />ب<br />ل<br />ت<br /> ش <br />ظ <br /> ط <br /> ز<br /> ر<br />
ظ<br />ز<br />ر<br />ذ<br />د<br />س<br />ط<br />ظ<br />
</div>
</div>



حالا یه توضیح میدم که اصل مشکلم چیه
من می خوام روی عکسها که میرم tooltip باز شه( jquery) و برای دایو هم scrool jquery ایجاد بشه وقتی توی صفحه میزارم درست اما از user control که می خونه درست نمایش نمیده

raziee
سه شنبه 05 مهر 1390, 14:02 عصر
حالا یه توضیح میدم که اصل مشکلم چیه
من می خوام روی عکسها که میرم tooltip باز شه( jquery) و برای دایو هم scrool jquery ایجاد بشه وقتی توی صفحه میزارم درست اما از user control که می خونه درست نمایش نمیده
مشکل شما به خاطر عدم شناسایی آبجکتی هست که بوسیله ی AJAX به صفحه اضافه شده.
یعنی جاوا اسکریپت مربوطه که گفتید (که من اطلاع ندارم دقیقا چی هست)کنترل Image ای که بعد بارگذاری به صفحه اضافه شده رو نمیشناسه.
برای رفع این مشکل باید اسکریپت مربوطه دوباره اجرا بشه تا بتونه image جدید رو هم شناسایی کنه.

maryam_272
سه شنبه 05 مهر 1390, 14:12 عصر
ممنون از اینکه جواب دادید شما فرمودید
برای رفع این مشکل باید اسکریپت مربوطه دوباره اجرا بشه تا بتونه image جدید رو هم شناسایی کنه.
میشه توضیح بدید چطوری اسکریپت رو دوباره اجرا کنم
آخه من توی خود user control هم که این کتابخونه ها رو میزارم بازم جواب نمیده

maryam_272
سه شنبه 05 مهر 1390, 16:58 عصر
کسی هست بگه باید چکار کنم
یعنی کسی با این مشکل مواجه نشده؟

raziee
سه شنبه 05 مهر 1390, 17:16 عصر
این لینک (http://barnamenevis.org/showthread.php?249838-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF-%DB%8C%DA%A9-%D9%86%D9%85%D9%88%D9%86%D9%87-%DB%8C-%DA%A9%D9%88%DA%86%DB%8C%DA%A9%DB%8C-%D8%A7%D8%B2-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DB%8C-JQuery-%D8%AF%D8%B1-ASP.NET)رو ببینید.

maryam_272
چهارشنبه 06 مهر 1390, 12:19 عصر
آقای رضیئی از پاسختون ممنونم
پروژه شما را دانلود کردم و یکمی بررسی کردمش اما من خیلی با فایلهای ashx آشنایی ندارم میشه درباره استفاده از این فایلها راهنمایی کنید یا اگه لینکی برای آموزش بزارید که من بتونم این مبحث رو یاد بگیرم
از اینکه با حوصله به سوالهام جواب میدید ممنونم

maryam_272
چهارشنبه 06 مهر 1390, 14:48 عصر
ممنون آقای رضیئی مشکلم حل شد
خیلی کمکم کردید

Mahnet
پنج شنبه 07 مهر 1390, 20:03 عصر
با سلام
از توابع live یا delegate به جای bind یا نام event تابعی استفاده کنید.
به عنوان مثال به جای کد زیر ...

$('a').mouseenter(function(e){
// ....
});
$('a').bind('mouseenter', function(e){
// ....
});

از تابع زیر استفاده کنید

$('a').live('mouseenter', function(e){
// ....
});

maryam_272
پنج شنبه 28 مهر 1390, 15:21 عصر
سلام
یه سوال دیگه داشتم چطوری میشه برای فیلدها validation گذاشت من قبلا از validate Jquery اسفاده می کردم و برای text box ها class="requered" می گذاشتم اما الان وقتی می نویسم $("form").validate(); اصلا کاری انجام نمی دهد
روش شما را برای validate استفاده کردم اما کارفرما می خواد که یا با بیرون اومدن از هر تکست باکس text box validate بشه یا همه فیلدها یکجا validate بشن
میشه راهنماییم بکنید چکار کنم؟