打开文件时传递url参数w / window.open()(来自ColdFusion页面)

时间:2016-03-02 14:54:57

标签: javascript jquery html coldfusion

在文件(.doc)上调用window.open()时,有没有办法将url参数传递给Web服务器?

我的问题是,当我调用window.open从javascript函数打开一个文件(在c :)上时,会向(coldfusion)Web服务器发出请求以重新加载当前页面(这很奇怪b / c我甚至没有使用提交类型输入):

viewAttachments.cfm

function viewFile(selectbox) {
    var selItem  = selectbox.options[selectbox.selectedIndex].text;
    var selValue = selectbox.options[selectbox.selectedIndex].value;
    var filePath = selValue + '\\' +  selItem;
    window.open(filePath);
}

<cfform name="gridForm"  method="post">
<table>
    <tr><td>
        <cfset destination = expandPath("./cold_case_files")>
        <cfdirectory directory="#destination#" action="list" name="fileList" type="file" >  
        <select id="fileName" name="fileName">
            <cfoutput>
                <cfloop query="fileList">
                    <option value="#directory#" >#fileList.Name#</option>
                </cfloop>
            </cfoutput>
        </select>  
    </td></tr>
    <tr><td>
        <input type="image" src="btn.jpg" name="view" onClick="viewFile(fileName);return false;" />
    </td></tr>
</table>
</cfform>

这是一个问题,b / c对整个文档中的url参数进行了coldfusion引用(在首次加载页面时传入),这导致找不到&#34; url参数&#34;例外:

var ProjID = <cfoutput>#url.ProjID#</cfoutput>;

我尝试使用name 参数的各种值调用window.open,以防止viewAttachments.cfm重新加载:

  

window.open(URL,名称,规格,替换)

     
      
  • _blank - 将URL加载到新窗口中。这是默认的
  •   
  • _parent - 将URL加载到父框架
  •   
  • _self - URL替换当前页面
  •   
  • _top - URL替换可能加载的任何框架集
  •   

所以我的两个选项要么是在触发window.open()时阻止调用页面重新加载,要么弄清楚如何将url参数传递给调用。

真奇怪的是,该页面在我复制代码的生产网站上运行。高层管理员告诉我,这不是网络服务器配置或应用程序设置问题,所以我不知所措。

的Gratzi。

1 个答案:

答案 0 :(得分:1)

(来自评论......)

您正在将物理路径传递给该文件,即c:\path\someFile.docx。相反,您需要使用指向服务器上该文件的 URL ,即http://yourserver/path/to/someFile.docx

就原始代码而言,如果有效,我会感到惊讶。并非所有浏览器都支持访问本地文件执行代码未使用的usually require special permissions and syntax"file:///....的代码。 (注意:HTML5功能不同)。另外,文件不是 local 。它们位于CF服务器上。但是,浏览器将在本地客户端计算机上查找。所以它几乎总会失败。除非您在浏览器中打开该页面 - 在CF服务器本身 - 您的普通用户显然无法做到这一点; - )