2011-07-07 16 views
1

ファイルのアップロードにjqueryフォームプラグインを使用しています。私の質問は、jqueryを使用して、スクリプトの一部でコントローラからjsonresultにアクセスする方法です。ファイル名を取り、静的リスト・タイプ文字列filesListに追加し、しかし、私はそれがで取り扱うJSON結果の間違った表現だと思うjsonをフォームプラグインのjqueryに変換する方法

[AcceptVerbs(HttpVerbs.Post)] 
      public JsonResult Index(HttpPostedFileBase file) 
      { 
    string filename = file.FileName; 
       filesList.Add(filename); 
    return new JsonResult 
     { ContentType = "text/plain", 
      Data = Json(new 
       { 
       filesList = filesList.Select(x => "File uploaded successfully " + x) 
       }, JsonRequestBehavior.AllowGet) 
     }; 
} 

化するJsonResult型として返します

$(function() { 
     $("#uploadForm").ajaxForm({ 
       iframe: true, 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       target :"myTable", 
       url: "/UploadFile/Index", 
      success: function(response,statusText) { 
     var jsonObject= result.childNodes[0].innerHTML; 
     for (i = 0; i < response.length; i++) { 
       alert(response.filesList[i]); 
        $('#myTable').append('<tr><td> <a href=' + response.filesList[i] + '></a> td></tr>'); 
       } 
     } 
    } 
     }) 
}) 

として、私のコントローラで 私のスクリプトがありますスクリプトでは、スクリプトの中でjsonresultオブジェクトを処理する方法について、filesListをテーブルに追加します。あなたに感謝

、実際にあなたがテーブルの行の多くをMYTABLEのIDを使用してテーブルにアタッチされている michaeld

+0

成功関数のjsonの構造を表示できますか? console.logにfirebugがインストールされていることを確認してください。 –

+0

成功関数は間違った方法で表現されています。アイデアを追加するために追加しましたが、正確には自分自身の問題であるjsonの成功を書いています。 – michael

答えて

0

私はあなたの問題を理解している場合、最初にあなたがコントローラを書き換える必要があります。 jsonを返すときにtext/htmlが必要なのはなぜですか?そして、文字列の文字列+リストは不可能ですが、私はあなたがデータ型=「JSON」を設定として直接、それをresultオブジェクトを使用して、メッセージとその後、クライアント側の

[AcceptVerbs(HttpVerbs.Post)] 
public JsonResult Index(HttpPostedFileBase file) 
      { 
       List<String> fileNames = new List<string>(); 

      fileNames.Add(file.FileName); 


      return Json(new 
      { 
       FileNames = fileNames.Select(x=> "File uploaded successfully " + x) 
      }, JsonRequestBehavior.AllowGet); 
} 

ファイル名のリストをしたいと思いますすでにjsonオブジェクトです

success: function(result) { 
     for (i = 0; i < result.FileNames; i++) { 
     $('#myTable').append('<tr><td> <a href=' + result.FileNames[i] + '></a> td></tr>'); 
     } 
    } 
+0

こんにちはarchil、私は私のコードでこれを試してみたいが、unfortunatley私は打たれましたfileNames.Selectリストとしては選択の定義を含んでいません。私に何ができる? JsonRequestBehavior.AllowGetは実際に何をしていますか? – michael

+0

using System.Linqを追加します。あなたのクラスに – archil

+0

が追加されましたが、なぜ私が提出した後に、アプリケーション/ json型のファイル保存ウィンドウをポップアップしているのですが、保存するとボタンの名前で保存されていてもテーブルも生成されないと仮定します – michael

0

。私はあなたが欲しいものを正確に理解していない、私は推測しようとします。 ファイル名のリストを追加したい場合、私はあなたが何をすべきだと思う:

var jsonObject= result.childNodes[0].innerHTML; 
    var html = '<ul>'; 
    for (i = 0; i < jsonObject.length; i++) { 
     html += '<li> <a href=' + jsonObject[i].message + '></a> </li>' 
    } 
    html += '</ul>'; 
    $('#mytable').after(html); 
} 
+0

こんにちはnicola、上記のコードを提出した後、テーブルを取得する代わりにファイル名をボタン名として保存するfileasポップアップウィンドウが表示されます。何が問題なのでしょうか?テーブルを見せる? – michael

+0

問題はコントローラーの戻り値型のためです。この成功関数の型は、コントローラー内のjqueryと戻り値の型のdataTypeである必要があります。 – michael

関連する問題