2015-12-22 322 views
4

我有一個php變量,其路徑爲value.I正試圖將此url變量傳遞給javascript函數。將具有路徑的路徑作爲值傳遞給javascript

private function call_import_function($post_type,$fields,$fields_order,$upld_file) 
{ 
      $uploaded_file = $upld_file['file']; 
      ?> 
      <script type="text/javascript"> 
      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); 
          } 
         }); 
      }); 
      </script> 
<?php 
} 

但它給我一個錯誤,

SyntaxError: malformed hexadecimal character escape sequence  
'uploaded_file' : 'E:\xampp\htdocs\nick\projectWed/wp-content/uploads/2' 

我已經試過PHP函數像json_encode,進行urlencode與$網址,但其中不爲我提供了很好的解決方案這一點。我需要解決這個錯誤...

+2

替換'\'用'/'。反斜槓是轉義字符 – bansi

+1

實際上這個$ url的值是動態生成的..它沒有手動放置.. :) ..在這裏我已經手動讓人理解了。 –

+1

_ $ url動態生成_ < - 在生成之後立即更換或更改邏輯以生成使用'/'而不是反斜槓的url,如果您還需要可移植到非Windows計算機。 – bansi

回答

1

你有正斜槓和反斜槓混合。

$url = ''E:\xampp\htdocs\nick\projectWed/wp-content/uploads/2/3.csv' 

應該

$url = "E:\\xampp\\htdocs\\nick\\projectWed\\wp-content\\uploads\\2\\3.csv"; 

雙反斜線在PHP字符串需要。他們評估爲單反斜槓。這是爲了從\ n(新行),\ t(製表符),\ 088(字符X)等轉義序列中消除它們。

+0

請爲雙反斜槓添加解釋,而不是單個。 –

+0

單反斜槓用於特殊字符,如新行,製表符或ascii轉義序列。要在PHP字符串中使用反斜槓,必須使用額外的反斜槓進行轉義。 – cantelope

+0

其實這個$ url的值是動態生成的..它沒有手動放置.. :) ..在這裏我已經手動讓別人去理解.. –

0

試試吧,讓我知道,如果您遇到任何問題。

在PHP文件

<?php 
$url = "E:\xampp\htdocs\nick\projectWed/wp-content/uploads/2/3.csv"; 
?> 
<script> 
url = '<?php echo $url; ?>' 
</script> 

在js文件

jQuery(document).ready(function(){ 
    console.log(url); 
}); 
+0

實際上,$ url的值是動態生成的..它沒有手動放置.. :) ..在這裏我已經手動讓別人理解。 –

0

如果你有HTML代碼
您可以在HTML中使用這個。

<input type='hidden' value=<?=E:\xampp\htdocs\nick\projectWed/wp-content/uploads/2/3.csv?> name='url' id="url"> 

和在腳本

<script> 
    var url=$("#url").val(); 
</script> 
0

只需準備對象作爲PHP數組然後JSON編碼

$url = $upld_file['file']; 

$formdata = array(
    'action' => 'get_csv', 
    'post_type' => $post_type, 
    'fields' => $fields, 
    'fields_order' => $fields_order, 
    'uploaded_file' => $url, 
);    
?> 
<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
    var formdata = JSON.parse('<?php echo json_encode($formData);?>'); 
+0

您的解決方案清空了我的變量, –

+0

@HasmukhMistry您是否在使用我的代碼之前定義了'$ url'? –

+0

是的..我更新了我的問題在這裏的代碼..你可以試試嗎? –

0

使用和addslashes,其測試:

<?php 
$url = addslashes('E:\xampp\htdocs\nick\projectWed/wp-content/uploads/2/3.csv'); 
?> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 
var uploaded_file = '<?=$url?>'; 
alert("working fine: " + uploaded_file); 
}); 
</script> 
+0

你可以檢查我更新的代碼嗎?並看看是否有效... addslashes使我能夠傳遞值,但是在json解析中給出了一個錯誤..我的php文件返回的Json數組,使用$ .post –