2016-03-29 50 views
0

我想在這裏做的是從一個javascript函數中調用我的PHP函數,它拋出從語法錯誤:未結束的字符串調用PHP函數中的JavaScript功能

var letters = "<?php echo GetRandLine('en_lang.txt'); ?>"; 

allthough的未終結字符串文字錯誤PHP函數返回正確。 php函數正在做的是返回一個單詞列表以從en_lang.txt搜索。從我收集的內容中可以看出它正在處理<?php ?>作爲</script>標記或者是其他內容。

PHP:

if (!function_exists('GetRandLine')) 
    { 
     function GetRandLine($name) 
     { 
      $file = fopen("$name","r"); 
     $text = array(); 
     $count = 0; 

     while(!feof($file)) 
     { 
      ++$count; 
      $text[] = fgets($file); 
      //echo fgets($file). "<br />"; 
     } 

     fclose($file); 

     $n = rand(0,100); 

     $ntext = $text[rand(0,$count)]; 
     //echo $n." "; 
     if($n > 50) 
     { 
      $ntext = $ntext . " " . $text[rand(0,$count)]; 
     } 
     if($n > 80 && $n < 90) 
     { 
      $ntext = $ntext . " " . $text[rand(0,$count)]; 
     } 
     if($n > 85 && $n < 88) 
     { 
      $ntext = $ntext . " " . $text[rand(0,$count)]; 
     } 

     return $ntext; 
    } 
} 

的javascript:

function clicker() 
    { 
     var letters = "<?php echo GetRandLine('en_lang.txt'); ?>"; 
     document.getElementById('theinput').value = letters; 
     document.getElementById("clicker").click(); 

    } 
+1

試圖逃避雙引號。 'addslashes(GetRandLine('en_lang.txt'))' – roullie

+0

請注意,正如你所說,不可能從JavaScript函數內調用PHP函數。到JavaScript發佈時,PHP早已執行,字符串的內容僅僅是函數的結果。對於JavaScript,它看起來像是硬編碼的。 –

+0

@Mr李斯特謝謝我不習慣混合不同的語言。我習慣於C++,並在需要時從其他函數內部調用函數。我仍然試圖弄清楚網頁設計的做法和不做的事情,以及一切如何協同工作。所以在這種情況下,我想我可以退出懶惰,只是一個JavaScript函數我有麻煩閱讀和使用JavaScript寫文件,所以我想我可以創建一個PHP函數,並稱它是這樣的! – insomniac

回答

0

你的字符串從GetRandLine返回可能有麻煩的字符,包括換行符這會導致你提到的錯誤,你應該對其進行編碼

var letters = <?php echo json_encode(GetRandLine('en_lang.txt')); ?>; 
+0

謝謝你,工作完美。 – insomniac

+0

在我開始嘗試這種方法之前,我嘗試了新的文件(txtFile);並不斷得到一個NS_ERROR_FAILURE代碼。 FILE出了什麼問題我知道目錄是正確的嗎? – insomniac