2013-10-04 38 views
0

我想通過使用這個JS代碼的textarea得到一些關鍵字。很明顯,我也需要PHP代碼,但是我遇到了字符串 - var ehy = "php echo $dunno"的問題。爲什麼這個?誰能幫我?

<?php 
if (isset($_POST['line'])) { 
$line = $_POST['line']; 
$dunno = (explode(" ", $line)); 
} 
?> 
<script> 
function countLines(){ 
    var stringLength = document.getElementById("myText").value.length; 
    var count = Math.ceil(stringLength/document.getElementById("myText").cols); 
    // just devide the absolute string length by the amount of horizontal place and ceil it 
    return count; 
    } 
function what(){ 
    var n = countLines() 
    var tarea = document.getElementById('myText') 
    var lines = tarea.value.split("\n") 
    //for(var x = 0; x < lines.length; x++) { 
     $.ajax({ 
      type: "POST", 
      url: "", 
      data: "line="+lines, 
      success: function(){ 
       var ehy = "<?php echo $dunno; ?>" 
       $('#what').text(ehy) 
       }, 
      }); 
     //} 
} 
</script> 

</head> 

<body> 
    <h1>SearchFunction()</h1> 
    <textarea rows="10" cols="70" id="myText"><?php echo "what the hell?";?></textarea> 
    <input type="button" onclick="what()"/> 
    <p id="try"></p> 
    <p id="what"></p> 

</body> 
</html> 
+3

'$ dunno'好像是一個數組,因此使用'「<?php echo $ dunno;?>」'不正確。作爲一般的經驗法則:始終使用'json_encode'將PHP值導出到JavaScript。 – Halcyon

+0

@FritsvanCampen:您應該將其作爲答案發布;你已經擊中了頭部。 (即使它只是一個純字符串,他應該使用'json_encode()',以確保它正確轉義)。 – Spudley

回答

0

你在那裏有一些類似HTML的頁面,裏面有一點點的PHP。

<html> 
<?php echo 'hi' ?> 
</html> 

在您的服務器,PHP的得到處理,所有的標籤被替換:

<html> 
hi 
</html> 

在你的特殊情況,在那裏你回聲$dunno在一些嵌入的JavaScript的中間位置。

所有這些都發生在服務器上。客戶端(瀏覽器)目前沒有做任何事情。

現在頁面已經準備就緒,它到達解釋它的瀏覽器。瀏覽器沒有得到這些位,因爲它們已經被解釋了。瀏覽器只是獲取了一些JS一個HTML:

var ehy = 5 

在更晚點,則執行what功能時,它會在值確定的長觸發成功設置的#what文本Ajax請求時間由PHP解釋器。

我希望這能回答你的問題。

+0

感謝您的回答,但爲什麼呢?如果(isset($ _ POST ['line']))解決了這個問題,不會這樣嗎?當頁面加載時,這個php代碼沒有執行,不是嗎? –

+0

json_encode不起作用。 –

+0

Chrome控制檯也會收到語法錯誤(var ehy =
意外的標記<)。這到底意味着什麼? –