1

我想使用 HTML5 将 json 数据从客户端(javascript)发送到服务器端(ASP.NET,C#)。我正在使用 XMLHttpRequest 对象通过使用以下 javascript 代码将数据发送到服务器。我在 html 按钮单击后执行此代码。

var xhr = new XMLHttpRequest();
var jsonString = JSON.stringify(jsonObj);
xhr.open('GET', '/HTML5_Crud.aspx?obj='+jsonString, true);
xhr.send(); 

在服务器端(ASPX.cs)文件上,我在 Page_Load 方法中使用以下代码从客户端获取数据。

if (Request.QueryString["obj"] != null)
{
    jsonStr= Convert.ToString(Request.QueryString["obj"]);
    lblTest.Text = "the json is: "+ jsonStr;
}

但是当我运行应用程序并单击按钮时,我的标签没有更新为最新数据。它仍然与我设置内联的默认文本相同。请帮助我如何解决这个问题。

4

3 回答 3

0

在第二个代码片段中, lblTest.Text 的值仅存在于您从 javascript 发出的请求的上下文中。没有神奇的方法可以更新最初发送到浏览器的响应。如果您希望更新,您必须执行以下任一操作:

  1. 使用回发而不是 javascript 并更新页面
  2. 使用 javascript 从 Ajax 请求中读取响应,然后更新 DOM 客户端。
于 2013-06-03T09:05:27.917 回答
0

你正在尝试做两件不同的事情。XMLHttpRequest 用于 AJAX 请求,您在后端所做的操作只会在重新加载页面时更新您的页面。但是因为您发送的是 AJAX 请求,所以页面永远不会刷新。

您需要做的是在您的代码隐藏中使用字符串或其他内容进行响应,并在您的 javascript 中根据需要使用该字符串。

于 2013-06-03T09:06:12.477 回答
0

您的标签不会以这种方式更新。

相反,您应该将该值返回给您的请求并处理它的 xhronreadystatechange事件。

或者,您可以将标签包装在 UpdatePanel 中并添加一个按钮,该按钮会将值存储在隐藏字段中并导致回发。然后您可以从此字段中检索值,整个面板将更新为新值。

于 2013-06-03T09:08:58.960 回答