1

HTML5を使用してクライアント側(javascript)からサーバー側(ASP.NET,C#)にjsonデータを送りたいです。次のJavaScriptコードを使用して、XMLHttpRequestオブジェクトを使用してサーバーにデータを送信しています。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

2 番目のコード スニペットでは、lblTest.Text の値は、JavaScript から作成したリクエストのコンテキスト内にのみ存在します。最初にブラウザーに送信された応答を更新する魔法の方法はありません。それを更新したい場合は、次のいずれかを行う必要があります。

  1. JavaScript の代わりにポストバックを使用してページを更新する
  2. JavaScript を使用して Ajax リクエストからの応答を読み取り、DOM クライアント側を更新します。
于 2013-06-03T09:05:27.917 に答える
0

この方法では、ラベルは更新されません。

代わりに、リクエストに値を返し、xhr のonreadystatechangeイベントを処理する必要があります。

または、UpdatePanel でラベルをラップし、たとえば隠しフィールドに値を保存してポストバックを引き起こすボタンを追加することもできます。次に、このフィールドから値を取得すると、パネル全体が新しい値に更新されます。

于 2013-06-03T09:08:58.960 に答える
0

あなたは2つの異なることをしようとしています。XMLHttpRequest は AJAX リクエストに使用され、バックエンドで行っていることは、ページがリロードされたときにのみページを更新します。ただし、AJAX 要求を送信しているため、ページが更新されることはありません。

あなたがする必要があるのは、コードビハインドで文字列または何かで応答し、JavaScriptで適切に文字列を使用することです。

于 2013-06-03T09:06:12.477 に答える