将路径URL附加到Javascript对象

时间:2015-09-15 19:07:45

标签: javascript jquery perl

我最初定义了perl变量

$delimit ="C";
$filename=\\aemdata.fcc.com\aem\GE\2015\Files\list.txt

我曾经在javascript中使用那些perl变量。每当用户点击save时,上述变量将通过ajax传递,后端perl子程序将根据上述参数执行。这是代码。

var form_data = new FormData();

form_data.append('action', "File_Check"); //perl subroutine which is called 
form_data.append('delimit', "$delimit");
form_data.append('jsondata', data);

\$.ajax({
    url: http://aemdata.fcc.com/cgi-bin/test/excel.pl, // directed to url where that perl subroutine is placed
    contentType: false,
    processData: false,
    type: 'post',
    data: form_data,
    cache:false,
    datatype: "script",
    success: function (result) {

    },

    error: function (data) {

    }   
});

此代码工作正常。现在不是在开始时最初指定$ filename。我想动态添加它作为参数。将其附加到javascript对象,并将其与其他参数一起传递给子例程perl代码。这是我得到错误的第二个代码

var form_data = new FormData();

form_data.append('action', "File_Check"); //perl subroutine which is called 
form_data.append('delimit', "$delimit");
form_data.append('jsondata', data);
form_data.append('filename', "$filename"); //ERROR ON THIS LINE


\$.ajax({
    url: http://aemdata.fcc.com/cgi-bin/test/excel.pl, // directed to url where that perl subroutine is placed
    contentType: false,
    processData: false,
    type: 'post',
    data: form_data,
    cache:false,
    datatype: "script",
    success: function (result) {

    },

    error: function (data) {

    }   
});

这个追加不起作用。它给我一个错误,如"未捕获的语法错误:意外的令牌ILLEGAL"在上面代码的第5行。 如果我可以将其与其他参数一起传递,则将调用子例程并且代码可以正常运行。但是我无法使用append传递URL。

有人可以在这提出任何建议吗?任何输入将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

您的结果字符串包含反斜杠,它是JavaScript中的转义字符。您需要使用正确的escape notation处理任何特殊字符,例如\\而不是\作为反斜杠。

答案 1 :(得分:0)

如上所述,对代码的以下更改有效。一旦我获得动态路径,我使用正则表达式,然后将其附加到javascript对象。

代码如下:

$filename=~ s/\\/\\\\/g;
form_data.append('filename', "$filename");