Javascript 选择新值时重新加载页面

Javascript 选择新值时重新加载页面,javascript,php,jquery,zend-framework,Javascript,Php,Jquery,Zend Framework,我在写一个脚本,我应该得到我的gmail地址文件夹 我在zend_框架上工作 我进入了: <?php $mail = new Zend_Mail_Storage_Imap($setting); $folders = new RecursiveIteratorIterator($mail->getFolders(), RecursiveIteratorIterator::SELF_FIRST);

我在写一个脚本,我应该得到我的gmail地址文件夹 我在zend_框架上工作 我进入了:

<?php
                    $mail = new Zend_Mail_Storage_Imap($setting);
                    $folders = new RecursiveIteratorIterator($mail->getFolders(), RecursiveIteratorIterator::SELF_FIRST);
                    echo '<select id="dir" class="form-control" name="folder">';
                    foreach ($folders as $localName => $folder) {
                        $localName = str_pad('', $folders->getDepth(), '-', STR_PAD_LEFT) .
                                $localName;
                        echo '<option';
                        if (!$folder->isSelectable()) {
                            echo ' disabled="disabled"';
                        }
                        echo ' value="' . htmlspecialchars($folder) . '" >'
                        . htmlspecialchars($localName) . '</option>';
                    }
                    echo '</select>';
                    //$mail->selectFolder("Inbox");
                    ?>
当我更改邮件文件夹时,我尝试重新加载页面,例如从收件箱更改为垃圾邮件或草稿,我尝试使用一个小javascript函数重新加载页面,但在刷新收件箱页面后,我如何解决这个问题
thx

您可以将选择框的值发布到页面,然后将该数据拉入php

因此,javascript应该是这样的,应该放在一个document ready语句中:

jQuery('#dir').change(function(){
    var dirVal = jQuery(this).val();
    $.post(window.location, {dir: 'dirVal'});
});
然后将您的PHP更改为类似以下内容:注意if语句根据JS中发布的'dir'值检查值:

$mail = new Zend_Mail_Storage_Imap($setting);
$folders = new RecursiveIteratorIterator($mail->getFolders(), RecursiveIteratorIterator::SELF_FIRST);
echo '<select id="dir" class="form-control" name="folder">';
foreach ($folders as $localName => $folder) {
    $localName = str_pad('', $folders->getDepth(), '-', STR_PAD_LEFT) . $localName;
    echo '<option';
    if (!$folder->isSelectable()) {
        echo ' disabled="disabled"';
    }
    if($_POST['dir'] == htmlspecialchars($folder)){
        echo ' selected="selected"';
    }
    echo ' value="' . htmlspecialchars($folder) . '" >' . htmlspecialchars($localName) . '</option>';
}
echo '</select>';

这是未经测试的,可能需要一些修改,但这是基本概念。发布val,然后根据该Post val进行选择。

thx用于重播,但我在/var/www/html/imap/application/views/scripts/main/index.phtml中得到了这个错误未定义的索引:dir,这里的确切含义是:if$\u Post['dir']==htmlspecialchars$文件夹{由于未发布dir变量,第一次加载时将出现未定义的索引错误。请尝试将if语句更改为:ifisset$\U POST['dir']&&$\U POST['dir']==htmlspecialchars$文件夹{echo'selected=selected';}嗨,米克尔,谢谢你的回答,但是在选择它之后仍然不能重定向到文件夹中。你建议这个问题的任何其他解决方案吗?嘿,Jeddey,我很乐意帮忙。你可以发布你的页面的功能JSB吗?这样我就可以修复一些代码了。JSBIN是免费使用的,也是一个很好的工具。同时,还需要更新完整的PHP。