Как получить доступ к JSON в JQuery для формы плагин - PullRequest
2 голосов
/ 07 июля 2011

Я использую плагин jquery form для загрузки файла.Мой вопрос заключается в том, как получить доступ к jsonresult из контроллера в части просмотра сценария с помощью jquery.мой сценарий имеет вид

 $(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>');
               }
        }
    }
      })
 })

и в моем контроллере принимает имя файла и добавляет к статическому списку строковый тип файла filesList и возвращает как тип jsonresult

 [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)
        };
}

Но я думаю, что это неверное представление обработкиРезультат json в скрипте, что я хочу сделать, это добавить filesList в таблицу, для этого как обработать объект jsonresult в скрипте.

спасибо, Майкл

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Если я понял вашу проблему, сначала вы должны переписать контроллер. Зачем вам нужен текст / HTML при возврате JSON? А строка + список строк невозможна, думаю, вам нужен список сообщений и имен файлов

    [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);
}

Затем на стороне клиента непосредственно используйте объект result, поскольку вы устанавливаете dataType = 'json', это уже объект json

success: function(result) {
       for (i = 0; i < result.FileNames; i++) {
       $('#myTable').append('<tr><td> <a href=' + result.FileNames[i] + '></a> td></tr>');
        }
    }
0 голосов
/ 07 июля 2011

На самом деле вы присоединяете к таблице с идентификатором mytable много строк таблицы. Я не совсем понимаю, что вы хотите, я пытаюсь угадать. Если вы хотите добавить список имен файлов, я думаю, вы должны сделать:

   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);
}
...