简体   繁体   中英

pass php array of email addresses to javascript

I have a php array containing email addresses that needs to be passed to a javascript function, but when javascript is trying to handle the addresses, i am getting a syntaxerror: illegal character error relating to the '@' in the email addresses...

How can I get round this? Is there a way of converting the email addresses to strings prior to them being passed to javascript? Or would I need to iterate over the array once it has been passed to js, and create a new array in js and convert them to strings then?

Ok, so the array is created by the user selecting the emails addresses from a list using checkboxes, this is then posted to a second page.

Heres the php code to create the array on the first page:

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>';
                    }

This is then posted to a seond page to be passed to the js function. The php to assign the array to a php variable is:

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

The the JS code inside the function:

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

The email addresses appear to be passed to JS correctly, in the error log I can see the individual emails, but with the illegal character highlighted...

Any help appreciated.

Thanks.

You are not enclosing the e-mails in quotes, which causes the syntax error you are getting.

You can add the quotes manually, but you can use the json_encode function instead.

The json_encode encodes a PHP object or array in JSON. As a JSON array is a valid JavaScript array, this will work well in your case.

Just change the JS line to:

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

As others have said, it looks like you need to surround the strings in quotes before putting them in the Javascript. Something like this.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM