【问题标题】:jQuery.html() not working well with Asp.Net innerHtmljQuery.html() 不适用于 Asp.Net innerHtml
【发布时间】:2012-04-03 01:55:37
【问题描述】:

所以基本上,我有一个 div,它是 runat="server"

<div id="results" runat="server" class="results"></div>

现在,我使用 jQuery 添加 HTML。

$('.results').html('Some crazy data');

但是,当我尝试使用 C# 访问此 DIV 中的数据时,它说 DIV 没有内容。

string myResults = results.innerHtml;

我的结果是空的。

有人可以帮帮我吗?我以前从未见过这种行为。

非常感谢!

【问题讨论】:

  • 应该可以工作...您确定在文档准备好后运行代码吗?
  • 这不起作用,因为 DIV 没有发布到服务器。如果您想将该数据带到服务器,请将其复制到表单控件(例如隐藏输入)。
  • 这是因为 javascript 运行在客户端,而 C# 代码运行在服务器端。 div 的内容(内部 html)不会发回服务器,因此您的 C# 代码无法访问它。

标签: c# javascript jquery asp.net html


【解决方案1】:

这一行看起来像 C#:

string myResults = results.innerHtml;

大概您正试图在 C# 中访问您的 服务器 端 DIV。这发生在 html 被发送到浏览器之前。这意味着,这根本行不通,因为您在浏览器中设置值客户端(在已发送 html 之后)。

【讨论】:

  • @Umm,是的,当然,但不清楚您要做什么。 1) 服务器生成 HTML 并将其发送到浏览器 2) 浏览器运行 javascript 并将 div 设置为包含“一些疯狂的数据” 3) 您想使用该数据...什么时候?在哪里?为什么?请详细说明您的用例,我们可以推荐一种方法(可能是 AJAX)。
【解决方案2】:

您可能正在寻找类似的东西......

<div id="results" runat="server" class="results"></div>
<input type="hidden" id="hiddenResults" runat="server" class="hiddenResults" />

$('.results').html('Some crazy data');
$('.hiddenResults').val('Some crazy data');

现在你可以访问服务器上的数据了

string myResults = hiddenResults.Value;

【讨论】:

  • 应该是 hiddenResults.Value
【解决方案3】:

而不是将 jQuery 和 Javascript 混为一谈。试试

var myResults = $(".results").html();

只是为了验证一切是否正确,看看你的results是否定义如下

var results = document.getElementById("results");
var myResults = results.innerHtml;

如果您试图将results 的值发送到服务器,除非发送 AJAX 请求,否则无法通过 jQuery 或 Javascript。

【讨论】:

  • 然而,你的代码没有理由不工作,除非results指向空
  • OP 正在访问服务器上的数据而不是客户端上的数据。
  • @KirkWoll,大声笑,不敢相信我是从 OP 复制的。感谢更新
  • @Starx,您修改了您的代码,但没有抓住我的意思。 OP 正在使用string myResults。这意味着他正在尝试在服务器端执行此操作,正如 amit_g 提到的那样。
  • @KirkWoll,我现在明白了,所以,修正了我的答案。
猜你喜欢
  • 2013-08-05
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2012-02-18
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多