2013-07-30 44 views
2

我有一個PHP文件,其中包含一些JavaScript代碼,我使用HTML中的腳本標記調用該文件。我的問題是,當我在PHP中有一個get方法,Java的功能將不echo..here是我的代碼:Javascript函數不會回顯

Header("content-type: application/x-javascript"); 

     $monthS = $_GET['location']; 

    // Connect to MySQL 
     if (!($database = mysql_connect("localhost", 
      "root", "")))      
      die("Could not connect to database </body></html>"); 

    // open Events database 
     if (!mysql_select_db("Events", $database)) 
      die("Could not open Events database </body></html>"); 


      $result = mysql_query("SELECT * FROM posted_events WHERE Month_ = 'July' ") 
        or die ('Error updating database because: '.mysql_error());; 


      $daysArray = Array(); 
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
       $daysArray[] = $row['DayNum']; } 
      $length = count($daysArray); 

      echo "function test() { "; 
       echo "alert('monthS');"; 
       for($i=0; $i < $length; $i++) { 
      echo "var active = document.getElementById('day'+".$daysArray[$i]."); 
      active.setAttribute('class', active.getAttribute('class') + ' event'); "; 
}  
      echo "}"; 

但是,如果我完全除去$monthS = $_GET['location'];那麼函數回聲,但我需要這個變量。我使用JQuery從JS獲得了這個變量。

+1

這段代碼在做什麼太可怕了。它宣稱它會生成Javascript(使用錯誤的MIME類型),然後在錯誤中混合使用純文本和HTML(兩者都不是有效的Javascript)。當然,如果有任何(人類可讀的)錯誤輸出生成,例如「未定義索引$ _GET [位置]」,也會中斷輸出。請考慮所有這些問題並重新訪問代碼以使其更緊密。 – Jon

+0

打開錯誤報告並查看顯示的消息。很可能你沒有正確設置'location'。你可以用'print_r($ _ GET)'或['array_key_exists()'](http://php.net/manual/en/function.array-key-exists.php)來測試 – jedwards

+0

'$ _GET [ '位置']'通過了?你是否得到了一個PHP通知,導致你的輸出被搞砸了?順便說一下,你似乎沒有正確地使用變量,在你試圖將它輸出到alert()中。你只是輸出一個'monthS'的文字串而不是一個變量。 –

回答

3

非常仔細這種類型的代碼。你直接生成Javascript。 ANY來自PHP的警告或雜散輸出可能會在代碼中引入語法錯誤,導致JS解釋器殺死整個腳本塊。

你最好生成一些預先寫好的Javascript數據,這些數據可以處理數據,例如,

$data = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $data[] = $row; 
} 
?> 
<script type="text/javascript"> 
var data = <?php echo json_encode($data); ?>; 

for (i in data) { 
    ... do stuff with javascript data array 
} 

因爲目前的情況是,如果你沒有在URL此腳本location參數,你可能會得到一個PHP警告有關未定義的數組鍵。該警告將成爲JS代碼的一部分,並被視爲語法錯誤。

0

您需要將PHP Get變量轉換爲javascript以分配js變量。

echo "<script>var varmonthS = " . $_GET['location'] . ";"; 
echo "alert(varmonthS);</script>"; 
+0

,但我想將js變量分配給php – Kay

+0

我認爲您不能這樣做。 PHP服務器端代碼在JS客戶端代碼運行之前運行。 – detailCode

+0

是啊,我現在意識到了。任何方式,我可以使這成爲可能? – Kay