如何在ajax中使用url来调用handler.ashx

时间:2013-09-20 20:58:41

标签: javascript asp.net ajax jquery

嘿,我的项目目录如下:

project 
  codes
    fileupload(ashx)
  scripts
  image
  web-pages
    home(aspx)
    about(aspx)
    FileUpload(aspx)

我在我的FileUpload(aspx)中使用了这个ajax函数:

<script>

function ajaxFileUpload() {
    $.ajaxFileUpload({
        url: "/FileUpload.ashx", // The problem is here
        secureuri: false,
        fileElementId: 'fileToUpload',
        dataType: 'json',
        success: function (data, status) {
            if (typeof (data.error) != 'undefined') {
                if (data.error != '') {
                    alert(data.error);
                } else {
                    ShowUploadedFiles(data.upfile, filename);
                    $('#fileToUpload').val("");
                }
            }
        },
        error: function (data, status, e) {
            alert(e);
        }
    });
}
</script>

如何从此函数调用我的处理程序(fileupload.ashx): 我尝试了很多方法:

1 - url: "../codes/FileUpload.ashx", Not working 
2 - url: "~/codes/FileUpload.ashx", Not working
3 - url: "./codes/FileUpload.ashx", Not working 
4 - url: "/codes/FileUpload.ashx", Not working
5 - url: "/project/codes/FileUpload.ashx", not working 
6 - url: "codes/FileUpload.ashx", not working 
7 - url: "/FileUpload.ashx", not working 

PS:当我更改FileUpload.aspx的目录并将其放在项目的主文件夹中时...它将与此url完美配合:codes / FileUpload.ashx

所有想法?

1 个答案:

答案 0 :(得分:0)

如果您在IIS中托管并且Web应用程序的根目录设置为/ project / web-pages /目录,那么您将需要在该目录中拥有该Web应用程序的所有其他目录。 IE:

如果工作网址结构是http://your.url/home.aspx正在运行,那么您的项目需要结构如下:

/project/web-pages/
/project/web-pages/image
/project/web-pages/scripts
/project/web-pages/codes

否则IIS将不会提供/ project / codes中的文件。除非为/ codes设置单独的IIS虚拟目录。

如果IIS配置为使您的网址看起来像http://your.url/web-pages/home.aspx,则可以使用/codes/fileupload.ashx相对路径访问/ codes目录 ,假设您已配置了IIS网站的根目录是/ project /目录。