2013-12-21 56 views
0

我有一個包含需要傳遞給javascript函數的電子郵件地址的php數組,但是當javascript嘗試處理地址時,出現語法錯誤:非法字符錯誤與電子郵件地址中的'@'...將php數組的電子郵件地址傳遞給javascript

我該如何解決這個問題?有沒有一種方法將電子郵件地址轉換爲字符串,然後再傳遞給javascript?或者我需要在數組傳遞給js時迭代數組,然後在js中創建一個新數組並將它們轉換爲字符串呢?

好吧,所以數組是由用戶使用複選框從列表中選擇電子郵件地址創建的,然後將其發佈到第二頁。

赫雷什PHP代碼到第一頁上創建陣列:

while ($row = mysqli_fetch_array($students_results)) { 
         echo'<div class="form-group"><div class="checkbox"><label><input type="checkbox" name="parentsemails[]" value=' . $row['parent_email'] . '">' . $row['parent_name'] . ' (Student: '. $row['student_name'] . ')</label></div></div>'; 
        } 

這然後發佈到seond頁要被傳遞給js函數。到陣列分配給一個PHP變量PHP是:

if (isset($_POST["parentsemails"])) { 
      $pe = $_POST['parentsemails']; 
     } 

的函數內部的JS代碼:

email_a = new array(<?php echo implode(',', $pe); ?>); 

地址出現要傳遞給JS正確地,在錯誤日誌我的電子郵件可以看到個別電子郵件,但與非法字符突出顯示...

任何幫助表示讚賞。

謝謝。

+2

你可能忘了用引號括 –

+0

地址哪裏是你的代碼示例?聽起來好像你並沒有將電子郵件作爲一個字符串包裹起來,例如'[email protected]' –

+0

你可以逃脫@?可能是這樣的,或者像Kohjah說的那樣可能引用 – DWolf

回答

1

正如其他人所說,它看起來像你需要將它們放在Javascript中之前用引號括起來。像這樣的東西。

<?php 
$_a = array(); 
foreach($pe as $str) 
    $_a[] = "'${str}'"; 
?> 
email_a = new array(<?php echo implode(',', $_a); ?>); 
+0

謝謝你們的回覆,但是quickshiftin的解決方案對我來說效果最好。 json_encode函數引發了一些其他的語法錯誤。也許當我的代碼完全按預期工作時,我可以進一步精簡它。 – user2457155

2

你沒有用引號括起電子郵件,這會導致你得到的語法錯誤。

您可以手動添加報價,但也可以使用json_encode函數。

json_encode使用JSON對PHP對象或數組進行編碼。作爲一個JSON數組是一個有效的JavaScript數組,這對你的情況很有效。

只要改變JS行:

email_a = <?php echo json_encode($pe); ?>;

+2

'json_encode'在這裏是一個不錯的解決方案,Marco,+1! – quickshiftin

相關問題