gpt4 book ai didi

javascript - ASP.Net 用户控件中的冲突 JQuery 函数

转载 作者:行者123 更新时间:2023-11-29 22:28:25 25 4
gpt4 key购买 nike

我有一个名为 MyControl 的用户控件。

并且在页面中使用了3次。因此,页面上有 3 个控件。

我在那个使用 ServerControl 的控件中编写了 jquery 函数,例如

function MyFunction(myName) {
//some Ajax Call

$("#<%= MyTextBox1.ClientID").val(DataFromAjax);
}

问题是页面有 3 个 JQuery 函数“MyFunction”并且很困惑。如果我在页面上仅使用 1 个控件,我的代码将成功运行。但如果超过一个,则功能与其他功能冲突。

我无法将该功能从用户控件移动到页面,因为它在控件中引用了一些服务器端控件。

你能告诉我吗?谢谢大家。

这是我的 JQuery 函数。

function GetData(ADUser) {

$.ajax({
url: "/Health/Health.asmx/GetPersonData",
data: "{ 'samAccount': '" + ADUser + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
var user = data.d;

if (user != null) {

$("#cphContent_PersonalDetail1_txtFirstName").val(user.FirstName);
$("#cphContent_PersonalDetail1_txtLastName").val(user.LastName);
$("#cphContent_PersonalDetail1_txtTelephone").val(user.Telephone);
$("#cphContent_PersonalDetail1_txtEmail").val(user.Email);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
});

}

这就是我将它绑定(bind)到 HyperLink 控件的方式。

if (!IsPostBack)
{
hlFill.Attributes.Add("onclick", string.Format("GetData('{0}'); return false;", GlobalSettings.UserADAccount));
}

最佳答案

当您调用“MyFunction”时,您希望实现什么?我的意思是,正如您尝试调用它那样,您在页面上拥有的三个控件中的每个 javascript 函数都同时执行,以便从 Ajax 回调将值填充到每个控件中。

或者您是否试图根据某些约束在每个控件中调用特定函数?

每个案例都有不同的答案。例如,在第一种情况下,这纯粹是理论上的,但是当您声明 MyFunction 时,您可以继续构建单个函数例如:

if(MyFunction != null)
{
var oldFunction = MyFunction;
MyFunction = new function(){ //new code here; oldFunction(); }

}
else
{
//Create it as you were but assign it to MyFunctino
}

如果是后者,你想根据特定的约束调用每个 MyFunction,无论如何你可以,例如获取 Asp Controls id 并将它附加到函数名称,这样你就可以创建一个独特的函数,但我不确定你怎么调用它,所以这可能有帮助也可能没有帮助。

编辑:

我现在对你的问题有了更多的了解。我现在假设您单击三个控件中的任何一个,它总是执行它找到的第一个控件,所以它只是将数据重新加载到第一个控件中?

问题的症结有两个:

  • 您的控件输出到页面的函数名称之间没有区别。
  • 该控件会在 ajax 回调成功时评估您在函数中的设置我假设在页面上引用了多个 html 控件?

从您发布的 JQuery 函数中,我看不出为什么每次都需要将其粘贴到控件中,因为我没有看到任何服务器端变量输出?

我的建议是在所有控件都使用的父页面中创建一个函数。您明确声明由于服务器端变量而不能,但如果是这种情况,则修改您的 GetData() 函数以接收更多参数,以便这些参数定义它应该运行的上下文,而不是从它输出的控件来自。

可能将 controlid 作为参数传递给 jquery 函数,它也可以用作另一个选择器来查找相关的 html 控件以填充回调值。

多次输出一个函数应该会引发“我做得对吗?”这样的问题。而不是“我怎样才能让它工作?”。

关于javascript - ASP.Net 用户控件中的冲突 JQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com