2013-03-08 94 views
1

我有一個PHP網頁,顯示日曆上顯示的具體日期。Javascript和PHP字符串未捕獲的語法錯誤

日期存儲在MySql數據庫中。

在網頁的開頭,我做到以下幾點:

<?php 
//Load in database 

$query = "SELECT ID, Full_Name, Arrival_Date, Departure_Date FROM bookings ORDER BY Arrival_Date"; 

if ($result = $dbc->query($query))  //Retrieve all the booking details 
{ 
    $numrows = $result-> num_rows; 

    $id_array; 
    $name_array; 
    $arrival_array; 
    $departure_array; 

    for ($count = 0; $count < $numrows; $count++) 
    { 
     $row = $result->fetch_assoc(); 

     $id_array[$count] = $row['ID']; 
     $name_array[$count] = $row['Full_Name']; 
     $arrival_array[$count] = $row['Arrival_Date']; 
     $departure_array[$count] = strval($row['Departure_Date']); 
    } 
} 
else 
{ 
    //Error 
} 
?> 

ID是一個數字 FULL_NAME是一個字符串 Arrival_Date和DEPARTURE_DATE的是日期(YYYY-MM-DD)

的日曆是一個javascript對象,因此我需要將預訂信息放入我的javascript函數中才能使用它。

這是我正在試圖做的是:

<script type="text/javascript"> 
    var array_ID = [<?php echo implode(",",$id_array); ?>]; 
    var array_name = [<?php echo implode(",",$name_array); ?>]; 
    var array_arrival = [<?php echo implode(",",$arrival_array); ?>];           
    var array_departure = [<?php echo implode(",",$departure_array); ?>]; 

    var booking_numbers = <?php echo $numrows; ?>; 
</script> 

不過,我得到一個錯誤'未捕獲的SyntaxError:意外的標識' 就行了

var array_name = [<?php echo implode(",",$name_array); ?>]; 

我懷疑這是因爲一些名稱在陣列即將到來時有空格

var array_name = [Pippa,Pippa Smith,Pippa Smith]; 

當php值放入。

所以這是我的問題。我怎麼才能告訴JavaScript將這些輸入視爲一個字符串。

我知道這可能是一種結合JavaScript和PHP的可怕方式,所以如果任何人有更好的建議,我會很樂意接受它們!

+0

請出示轉換我們生成的js代碼。如果'$ name_array'中的值是字符串,那麼你至少會缺少引號。 – bfavaretto 2013-03-08 13:10:05

+0

@Pippa玫瑰史密斯,你可以看看下面的URL? HTTP://計算器。com/questions/15090128/quotes-in-php-array-to-javascript-array/15090285#15090285 – 2013-03-08 14:01:55

回答

3

1)一個倒過來使用的PHP implode和使用split劈裂它javasciript ..

最好的辦法,雖然是使用echo json_encode($id_array)在PHP,使其數組轉換成JavaScript對象

+1

Upvoted,'json_encode'是去這裏的路。考慮到功能已經a)易於獲得並且b)經過充分測試,您正在尋求一個受到傷害的世界,嘗試以任何其他方式將字符串從PHP編碼爲JavaScript對象。 – 2013-03-08 13:20:36

+0

correct .. :) :) ..謝謝 – bipen 2013-03-08 13:21:51

+0

好吧,那麼你的意思是var array_ID = [<?php echo json_encode($ id_array); ?>]; – 2013-03-08 14:15:41

1

你必須通過將它們放在引號之間來標記javascript的字符串文字。

var array_name = ["Pippa","Pippa Smith","Pippa Smith"]; 

使用json_encode()得到有效的JavaScript對象從PHP值(S)文本。


一個側面說明

:你爲什麼從

[1] x y z 
[2] X Y Z 

改變數據的結構

[1] [2] 
    x X 
    y Y 
    z Z 

即爲什麼你有這些獨立的變量array_ID, array_name, array_arrival, array_departure而不是一個數組包含所有的信息?

相關問題