为什么这个jQuery ajax调用失去了'数据'设置?

时间:2018-02-21 09:53:06

标签: jquery ajax asp.net-mvc

我有以下脚本来获取给定路径的文件列表:

function getFiles(dirPath) {
    $("#fileList").empty();
    $.ajax({
        url: '@Url.Action("Get", "File")',
        data: dirPath,
        method: 'GET'
    })
    .done(function (files) {
        for (var i = 0; i < files.length; i++) {
            $("#fileList").append('<li>' + files[i] + '</li>');
        };
    });
};

其中fileList为空ul。这将调用以下操作方法:

public IActionResult Get(string dirPath)
{
    var dirInfo = new DirectoryInfo(dirPath);
    var files = dirInfo.GetFiles();
    var ret = new List<string>();
    foreach (var info in files)
    {
        ret.Add(info.Name);
    }
    return Json(ret);
}

当调用脚本getFiles方法时,dirPath有一个到目录的有效路径,我希望当我将data选项设置为此路径时,它将被附加到用于通话的最终网址。

然而,当我的Get操作方法被调用时,其dirPath参数值为null。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您需要传递dirPath,如下所示: -

data: {dirPath : dirPath},

注意: -

您可以通过GET方法传递URL中的queryString或数据对象。因此,要么将dirPath直接添加到url参数作为queryString,要么将其作为对象并传递(如上面的代码所示)