php路径变量,将具有路径作为值的php变量传递给javascript

本问题已经有最佳答案,请猛点这里访问。

我有一个PHP变量,其路径为值。我正在尝试将此URL变量传递给JavaScript函数。

private function call_import_function($post_type,$fields,$fields_order,$upld_file)

{

$uploaded_file  = $upld_file['file'];

?>

jQuery(document).ready(function($) {

var formdata = {

'action': 'get_csv',

'post_type' : '<?php echo $post_type;?>',

'fields' : '<?php echo $fields;?>',

'fields_order' : '<?php echo $fields_order;?>',

'uploaded_file' : '<?php echo $uploaded_file;?>',

};

$.post('<?php echo $this->ajax_url;?>',formdata, function( data ) {

console.log("Begun!!!");

}).done(function( data ) {

var obj = jQuery.parseJSON(data);

if(obj.error)

{

$("#column2").html(obj.error_msg);

}

else

{

console.log(data);

//$("#column2").html(obj.output);

}

});

});

}

但这给我一个错误,

SyntaxError: malformed hexadecimal character escape sequence

'uploaded_file' : 'E:\xampp\htdocs

ick\projectWed/wp-content/uploads/2'

我已经尝试了$ json这样的php函数,例如json_encode,urlencode,但是没有一个函数为我提供了很好的解决方案。 我需要解决这个错误...

用替换``。反斜杠是转义字符

实际上,该$ url的值是动态生成的..它不是手动放置的.. :: ...在这里,我已经手动放置了供他人理解。

$ url是动态生成的而不是反斜杠的url(如果您还需要移植到非Windows机器上)。

该错误是因为生成的JavaScript无效。那是由于字符串中的斜杠,斜杠在JavaScript中也代表转义序列。一种解决方案是使用json_encode()将$url设置为JavaScript可以理解的字符串文字(因为JSON和JavaScript具有此语法相同)。

@JonathanLonowski这不应该是所引用问题的重复。

@JonathanLonowski他没有在这里传递任何数组。它只是一条路径,这会给反斜杠带来问题。我在提到的问题中没有看到类似的内容。

@JonathanLonowski请参阅我正在执行的完整功能...

@TareqMahmood这篇文章中的答案比问题更笼统,它的建议适用于字符串以及数组以及其他类型的值。但是,为了有意进行更笼统和更深入的解释,还有"如何将变量和数据从PHP传递到JavaScript?"。

@JonathanLonowski我尝试了json_encode和urlencode,但这给了我一个错误jQuery.parseJSON(data); SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符

@HasmukhMistry如果在不使用引号的情况下使用json_encode(),则不必使用JSON.parse()。 JSON将在语句中间写出,以供JavaScript将自身解析为字符串文字。 uploaded_file : ,

@JonathanLonowski,Uploaded_file:,这很好从php代码返回一个json_encode数组...在那一刻,我遇到了我之前提到的错误。

@HasmukhMistry如果响应中包含合适的Content-Type标头,则$.post()将已经知道要对其进行解析。因此,data可能已经是等效的JavaScript值,而不是JSON字符串。根据响应中的JSON值,您可以使用console.log(typeof data);进行检查。如果报告object,则说明解析已经完成。

让我们继续聊天中的讨论。

您有正斜杠和反斜杠混合在一起。

$url = ''E:\xampp\htdocs

ick\projectWed/wp-content/uploads/2/3.csv'

应该

$url ="E:\\xampp\\htdocs\

ick\\projectWed\\wp-content\\uploads\\2\\3.csv";

PHP字符串中需要双反斜杠。 他们评估为单个反斜杠。 这是为了将它们与 n(换行), t(制表符), 088(字符X)等转义序列进行区分。

请添加双反斜杠而不是单反斜杠的说明。

单个反斜杠用于特殊字符,例如换行符,制表符或ascii转义序列。要在PHP字符串中使用反斜杠,您必须使用额外的反斜杠对其进行转义。

实际上,该$ url的值是动态生成的..它不是手动放置的.. :) ..在这里,我已经手动放置了供某人理解。

为什么在projectWed之后将单/更改为\?

使用addslashes,其经过测试:

$url = addslashes('E:\xampp\htdocs

ick\projectWed/wp-content/uploads/2/3.csv');

?>

jQuery(document).ready(function($) {

var uploaded_file = '=$url?>';

alert("working fine:" + uploaded_file);

});

您可以检查我的更新代码吗?并查看是否可行... addlashes使我能够传递值,但是在json解析中给出了错误。Json数组由我的php文件返回,使用$ .post调用

只需将对象准备为php数组,然后进行JSON编码

$url  = $upld_file['file'];

$formdata = array(

'action' => 'get_csv',

'post_type' => $post_type,

'fields' => $fields,

'fields_order' => $fields_order,

'uploaded_file' => $url,

);

?>

jQuery(document).ready(function($) {

var formdata = JSON.parse('<?php echo json_encode($formData);?>');

您的解决方案清空了我的变量,

@HasmukhMistry在使用我的代码之前是否定义了$url?

是的。我在这里更新了我的问题的代码。

@HasmukhMistry如上所示,您定义了$url但回显了$uploaded_file吗?

抱歉,这是我在此处输入错误。.但是我正在传递相同的变量...

@HasmukhMistry参见我的编辑答案。

如果您有html代码

您可以在html中使用它。

ick\projectWed/wp-content/uploads/2/3.csv?> name='url' id="url">

并在脚本中

var url=$("#url").val();

尝试一下,如果您遇到任何问题,请告诉我。

在PHP文件中

$url ="E:\xampp\htdocs

ick\projectWed/wp-content/uploads/2/3.csv";

?>

url = '<?php echo $url; ?>'

在js文件中

jQuery(document).ready(function(){

console.log( url );

});

实际上,该$ url的值是动态生成的..它不是手动放置的.. :: ...在这里,我已经手动放置了供他人理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值