我可以在jquery中使用php变量吗?

时间:2017-04-27 15:24:41

标签: php jquery

在我现有的代码中,我创建了一个用于放置CSV文件数据的新代码。这很好用。我需要做的是从box1中删除项目并将其替换为此代码。如果我使用jquery,我可以这样做,但不知道如何将我的代码与jquery链接。

是否可以使用jquery的php变量?您将在代码中看到我尝试了一些js代码来遍历var并获取值。但是,这仅显示1个项目,而不是所有项目。

因此,实质上我需要从现有的PHP代码中删除<select><option>,并将这些项放入我现有的<select>#box1中。非常感谢

    <?php

    if (isset($_FILES['csvfile']) &&
        is_uploaded_file($_FILES['csvfile']['tmp_name']) &&
        $_FILES['csvfile']['size'] > 0) {
        echo "<h3>".
        "File ".$_FILES['filename']['name'].
        " uploaded successfully.".
        "</h3>";
        //get the csv file
        $file = $_FILES['csvfile']['tmp_name'];
        $handle = fopen($file, "r");

        //loop through the csv file
        echo '<select name="box" size="7" multiple="multiple">';
        while (($line = fgetcsv($handle, 1000, ',')) !== false) {
            foreach($line as $cell) {
                $clean = htmlspecialchars($cell);
                echo << < OPTION <
                    option value = "{$clean}" > {
                        $clean
                    } < /option>
                OPTION;
            }
        }
        echo "</select>";
    } else {
        echo 'no reults';
    }

    ?>
<select id="box1">
    <option></option>
</select>

<script>
    var data = <?php echo json_encode($clean); ?>;
    //var len = data.length;
    //console.log(len);

    for (var i=0; i < data.length; i++) {
        console.log(data);
    }
    console.log(data);
</script>

编辑:根据亚历杭德罗回答更新代码

<?php

if (isset($_FILES['csvfile']) && 
    is_uploaded_file($_FILES['csvfile']['tmp_name']) && 
    $_FILES['csvfile']['size'] > 0) {

    //get the csv file
    $file = $_FILES['csvfile']['tmp_name'];
    $handle = fopen($file,"r");

    //loop through the csv file

    //echo '<select name="box" size="7" multiple="multiple">';
        $file_lines = array(); // Global array
    while (($line = fgetcsv($handle, 1000, ',')) !== false) {
            $strings = array();
        foreach($line as $cell) {
            $clean = htmlspecialchars($cell);
            array_push($strings, $cell); // Add the string to the array
//            echo <<< OPTION
//                option value = "{$clean}" > {
//                    $clean
//                } < /option>
//            OPTION;
        }
            array_push($file_lines, $strings); // Add the line data to the global array
    }
    //echo "</select>";
}
else {
    echo 'no reults';
}
?>

<select id="box1">
    <option></option>
</select>

<script>
    var phpString = "<?php echo json_encode($file_lines); ?>";
    var data = JSON.parse(phpString);

    for (var i=0; i < data.length; i++) {
        console.log(data);
    }

</script>

1 个答案:

答案 0 :(得分:2)

您可以,但PHP输出是一个字符串,因此您必须用双引号将其括起来:

git bisect

由于它是一个字符串,您必须使用var phpString = "<?php echo json_encode($clean); ?>"; 进行解析,因此它将成为您可以使用的Javascript对象/数组:

JSON.parse()

编辑: var data = JSON.parse(phpString); for ( var i = 0; i < data.length; i++ ) { console.log(data); } 是一个字符串,因此无需$clean。我把答案好像是一个数组,所以我们要创建一个(实际上是两个:一行用于每行数据,另一个用于保存整个文件数据的全局数据 - 数组 - )。在json_encode()之前添加一个数组,我们会将文件中读取的每个字符串添加到其中:

echo '<select...>';

然后在下面,而不是//loop through the csv file echo '<select name="box" size="7" multiple="multiple">'; $file_lines = array(); // Global array while (($line = fgetcsv($handle, 1000, ',')) !== false) { $strings = array(); // Here, create an array for this particular line foreach($line as $cell) { $clean = htmlspecialchars($cell); array_push($strings, $cell); // Add the string to the array echo << < OPTION < option value = "{$clean}" > { $clean } < /option> OPTION; } array_push($file_lines, $strings); // Add the line data to the global array } ,您应该使用:

var phpString = "<?php echo json_encode($clean); ?>";

答案的其余部分应该运作良好。