2012-07-17 53 views
2

我試圖通過ajax發送php代碼,以便將其保存在文件中。 但是當我發送像這樣的東西:AJAX:如何在數據中發送反斜槓?

...$buffer = "if(\$_POST){".chr(13).chr(10);... 

反斜槓消失了!

這是我使用的代碼:提前

$.post('save.php', { 
      "c": window[currentCode].getValue(), 
      processData: false, 
      "f": fileName 
     }, function(data){ 
      .... 
     }); 
     return false; 
} 

謝謝!

+1

您需要轉義反斜槓以使其具有字面意思。只需加倍,然後添加一個以正確地逃避'$'。 'if(\\\ $ _ POST)' – 2012-07-17 17:57:56

回答

2
"if(\\\$_POST){" 

前面還有兩個反斜槓。

+0

謝謝。 解決方案: window [currentCode] .getValue()。replace(/ \\/g,「\\\\」) – user1532587 2012-07-17 18:06:12

+1

這可能會在代碼的其他方面產生一些不可預見的後果。 – 2012-07-17 18:10:08

+0

好的。我怎樣才能解決它的任何想法?謝謝 – user1532587 2012-07-18 20:01:19

1

這不是一個Ajax問題;你誤會了逃跑。在PHP中,"\$"的計算結果爲字符串$,因爲反斜槓只是具有轉義功能(如果您在瀏覽器中打開save.php,您也會看到$)。寫文字\$,你首先需要編寫\字符串(但反斜線也必須逃脫,所以我們必須"\\",然後寫$"\$"。這樣算下來

$buffer = "...\\\$_POST..."; 

產生預期的效果。

而且看到http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

+0

當我需要編輯像 – user1532587 2012-07-18 19:02:52

0

我仍然有一個問題,當我需要編輯使用正則表達式的文件在JavaScript這樣的:

function _basename(path) { 
    return path.replace(/\\\\/g,'/').replace(/.*\\//, ''); 
} 

Uncaught SyntaxError: Unexpected token , 

我用來編輯.php文件的函數破壞了我的javascript代碼。 我需要一種編輯代碼的方式,可以用於所有languajes。

編輯: 我有這個問題,只是在Linux服務器在Windows

請幫助!

+0

這樣的文件時,我仍然遇到問題在Linux中,額外的反斜槓會添加兩次! – user1532587 2012-07-18 19:30:46