gpt4 book ai didi

javascript - 在 AJAX 工作流方面需要帮助

转载 作者:行者123 更新时间:2023-11-30 18:59:15 27 4
gpt4 key购买 nike

抱歉,我不能用标题来描述更多,我将在下面详细说明:

我有一个 Web 应用程序,我想在其中实现一些 AJAX 功能。目前,它正在运行带有 VB.NET 代码隐藏的 ASP.NET 3.5。我当前的“问题”是我希望能够在用户单击列表中的项目时动态地填充 DIV。列表项当前包含应出现在 DIV 中的内容的 HttpUtility.UrlEncode() (ASP.NET) 字符串。

示例:

    <li onclick="setFAQ('The+maximum+number+of+digits+a+patient+account+number+can+contain+is+ten+(10).');">
What is the maximum number of digits a patient account number can contain?</li>

我可以使用 JavaScript 函数 unescape() 部分解码字符串,但它不能完全解码字符串。我更愿意将常见问题 ID 传递给 JavaScript 函数,然后以某种方式从其来源的数据库中提取信息。

我 99% 确定不可能从 JavaScript 函数中调用 ASP 函数,所以我有点难过。我是 AJAX/ASP.NET 的新手,所以这对我来说是一次学习经历。

最佳答案

首先,如果您在页面加载时从数据库中提取问题,您很可能也已经有了所有答案,所以只需继续使用您当前的方法,将答案塞入页面,就像您的代码示例所做的那样.除非您的 FAQ 列表有成千上万的问题,否则通过在每次单击列表项时点击数据库来以“AJAX 方式”进行操作在 IMO 上不会给您带来太多帮助。如果它确实有那么多问题,那么直接列表无论如何都是错误的方法。

其次,关于您的方法要牢记两点:

  1. 你将 html 放在 html 属性中
  2. 该属性指定要调用的 javascript 函数

所以你需要确保你的“答案”转义为 html 是有效的 js。通过有效的 js,我的意思是它不能有新行并且必须正确地转义引号。例如,以下 html - 虽然是有效的 html - 不会触发 onclick,你只会得到一个 js 语法错误:

<li onclick="setFAQ('This line's
multi line and has a single quote in it!')"

考虑到这些,我会说 HttpUtility.HtmlAttributeEncodeSystem.Web.Script.Serialization.JavaScriptSerializer 一起使用更适合您显示的标记。

JavaScriptSerializer json = new JavaScriptSerializer();
string answerString = "This line's\nmulti line and has a single quote in it!";
string onClickJS = String.Format("setFAQ({0})", json.Serialize(answerString));
string onClickAttr = HttpUtility.HtmlAttributeEncode(onClickJs);

更好的是,使用 .NET 的 ListItem 对象并完全丢失 HtmlAttributeEncode:

ListItem faqItem = new ListItem(questionString);
faqItem.Attributes.Add("onclick", String.Format("setFAQ({0})", json.Serialize(answerString)));

html 部分会自动为您转义,而且更加简洁。

至于您的 javascript,您不必在 setFAQ() 中解码任何内容。只需接受它的参数并将其放入您的“answer”div 中:

function setFAQ(answer) {
document.getElementById('answer').innerHTML = answer
}

关于javascript - 在 AJAX 工作流方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421326/

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