如何在$ .ajax(类型get)调用中获取方法的返回值? - javascript

我有一个ASP.NET MVC应用程序,其中有一个方法,该方法返回对象列表:

public List<FileObject> GetAllFilesFromDirectory()
        {
            string filePath = @"C:\FilesToWatch";
            string[] fileEntries = Directory.GetFiles(filePath, "*.txt", SearchOption.TopDirectoryOnly);

            FileObject fo;

            List<FileObject> list = new List<FileObject>();

            foreach (var file in fileEntries)
            {
                FileInfo info = new FileInfo(file);

                fo = new FileObject
                {
                    FileName = info.Name,  //asdf.txt
                    FilePath = info.FullName //C:\FilesToWatch\asdf.txt
                };

                list.Add(fo);
            }
            return list;
        }

现在,我想用javascript返回此列表:

$.ajax({
            type: "GET",
            url: "Home/GetAllFilesFromDirectory",
            data: ???,
            success: function () {
                console.log('success');

            },
            error: function () {
                console.log('error');

            },
            complete: function (data) {
                console.log('complete');

            }
        });

我知道我必须添加data:属性,但是我真的不知道在data:之后我应该写什么来返回此列表。

参考方案

您无需将data传递为controllerAction不接受任何参数。您可以从controllerAction返回以下更清晰的结果,如下所示:

  public ActionResult GetAllFilesFromDirectory()
    {
        string filePath = @"C:\FilesToWatch";
        string[] fileEntries = Directory.GetFiles(filePath, "*.txt", 
       SearchOption.TopDirectoryOnly);

        FileObject fo;

        List<FileObject> list = new List<FileObject>();

        foreach (var file in fileEntries)
        {
            FileInfo info = new FileInfo(file);

            fo = new FileObject
            {
                FileName = info.Name,  //asdf.txt
                FilePath = info.FullName //C:\FilesToWatch\asdf.txt
            };

            list.Add(fo);
        }
        return Json(new { filesList = list }, JsonRequestBehaviour.AllowGet);
    }

然后,您可以按照以下方式在ajax中读取响应:

    $.ajax({
        type: "GET",
        url: "Home/GetAllFilesFromDirectory",
        success: function (resp) {

          if(resp.filesList)
          {
              $.each(function( index, element ) {
                     console.log(element.FileName ); // i.e log the file name 
             });
          }


        },
        error: function () {
            console.log('error');

        },
        complete: function (data) {
            console.log('complete');

        }
    });

ajax:从json数组中提取json对象 - javascript

JSON(来自api的内部数组):[{"id":"001", "name":"john", "age":"40"}, {"id":"002", "name":"jane&…

停止Ajax循环JQuery - javascript

我使用ajax代码监视文件夹,以计算该文件夹中正在使用我无权访问的外部批处理复制的文件数。我有以下运行良好的无限循环:function loadProgWav(files){ $("#wav").load("progress_wav.php?file=<?=$row[2]?>"); } setInterva…

div中显示上一页,并显示最后一页数据表 - javascript

我正在尝试转到div中显示的上一页。由于我在上述div中使用ajax打开页面,因此“历史记录后退”方法将不起作用,因为浏览器中未保存任何历史记录。我敢肯定,除了建立一个可打开较旧页面的链接之外,我还可以做些其他事情(这是我目前正在做的事情)。这就是说,因为我通过单击数据表上的一行从page_1.php移到page_2.php,所以我想知道是否有什么办法可以重…

和字符中断通过PHP接收JSON - javascript

我有一个包含更多对象的数组。如果一个对象包含&字符,则php不会接收&之后的每个对象。可能是什么问题?这就是阿贾克斯xmlhttp.open("POST", "get.php"); xmlhttp.setRequestHeader("Content-Type", "application/…

如何隐藏您网站的javascript文件? - javascript

我在main.js文件中编写了许多使用ajax调用PHP函数的函数。问题在于,任何人都可以通过查看页面源代码来查看我的逻辑和内部称为php的网站的文件名。我应该如何防止人们查看我的JavaScript文件? 参考方案 可以混淆Javascript,但是没有什么可以阻止客户端执行在代码中查看网址字符串,或者只需检查HTTP请求本身即可确定正在攻击的URL。这加…