1

Web ページにアクセスすると、ユーザーの選択に基づいてそのページのデータを取得するコントローラー アクションが実行される状況があります。データを JSON オブジェクトとしてページに送り返そうとしていますが、データは HTML ページで 1 つの大きな文字列として開きます。コントローラーのアクションは、簡単に言うと、次のスニペットのようになります。

Public JsonResult MyMethod(string userSelection)
{

    string userData = (string) Data;
    return Json(userData, “text”, JsonRequestBehavior.AllowGet);
}

最初に JQuery メソッドを使用しようとしまし$.getJson()たが、データのアクション メソッドへの別の呼び出しを発行すると思われるため、これは間違っていると思います。これは私がやりたいことではありません。私が必要としているのは、JavaScript コードで JSON オブジェクトにアクセスして、プロパティ データを使用して Web ページのフィールドに入力できるようにすることです。基本的な質問は、ページが最初にレンダリングされたときに JSON オブジェクトを受け取るために JavaScript で何をしなければならないかということです。基本的なことが抜けていたら申し訳ありません。これは私の最初の試みです。

4

3 に答える 3

1

今日はまだ運がなかったが、仕事を辞めたとき、自分の車まで歩いていく作戦を思いついた。ユーザーは、JsonResult の操作方法がわからないページに入る前に、リストを表示するページから選択を行います。問題の一部は、ユーザーの選択に、JsonResult を操作したいページ内で $.getJson() を使用すると競合する JsonResult を返すコントローラー/アクションを呼び出すリンクが含まれていることです。ここに私の戦略があります: ユーザーが (問題のある) ページに移動する選択を行うと、(ASP) ViewData と厳密に連携するコントローラー/アクションを呼び出し、ViewData を使用して最初にそのページを表示します。ページに移動すると、ユーザーは選択を変更できます。これは、$ を使用する JavaScript イベントで処理します。(ASP) JsonResult で動作する別のコントローラー/アクション メソッドへの getJason() 呼び出し。この戦略を試した後、興味のある人のために結果を投稿します。

于 2012-05-30T00:07:09.640 に答える
0

あなたはしたくparseJSONないgetJSON

http://api.jquery.com/jQuery.parseJSON/

編集 -JsonResultあたかもそれがActionResult? それはうまくいきません。

適切なビューをレンダリングし、アクションgetJSONを呼び出すために使用します。JsonResult

于 2012-05-25T18:14:43.733 に答える
0

getJSONあなたが探しているものです。DOM の読み込みが完了すると実行される DOM ready イベントでそれを呼び出します。

$(function(){
 //This code will be executed on the DOM ready ( when the page is loaded)

  $.getJSON("YourControllerName/MyMethod?userSelection=someValue",function(data){

      alert(data.FirstName);     
      alert(data.AnotherPropertyName);    

   });
});

getJSONは、データ型が次のように設定された jQueryajaxメソッドの短縮形です。json

返すJSONデータが次のようなものであると仮定します

{
    "FirstName": "Scott",
    "AnotherPropertyName": "SomeValue"
}

上記のようなデータを返すには、Action メソッドを次のように変更します

public JsonResult MyMethod(string userSelection)
{
  var result=new { FirstName="Scott", AnotherPropertyName="Great"};
  return Json(result,JsonRequestBehavior.AllowGet);
}
于 2012-05-25T18:15:33.470 に答える