Javascript PHP登录脚本无重定向和更新div

Javascript PHP登录脚本无重定向和更新div,javascript,php,jquery,ajax,twitter-bootstrap,Javascript,Php,Jquery,Ajax,Twitter Bootstrap,我正在尝试获取一个登录页面来运行一个php脚本(使用API向服务器发送一个curl请求)并返回一个JSON响应,在使用登录脚本之后,我不希望页面刷新。我只想刷新整个导航栏 目前,它通过AJAX,不加载php页面,这部分工作正常。任何指导都将不胜感激 我正在使用以下命令: 引导3.1.1 PHP5.4 引导导航格式 <nav class="navbar navbar-inverse navbar-fixed-bottom" role="navigation"> <div cl

我正在尝试获取一个登录页面来运行一个php脚本(使用API向服务器发送一个curl请求)并返回一个JSON响应,在使用登录脚本之后,我不希望页面刷新。我只想刷新整个导航栏

目前,它通过AJAX,不加载php页面,这部分工作正常。任何指导都将不胜感激

我正在使用以下命令: 引导3.1.1 PHP5.4

引导导航格式

<nav class="navbar navbar-inverse navbar-fixed-bottom" role="navigation">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <? if(isset($_SESSION['account'][0])){
        echo $_SESSION['account'][0];
      }
        ?>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav navbar-right">
            <li class="divider"></li>
            <?
            if(isset($_SESSION['loggedin'])&&$_SESSION['loggedin']=='true')
            {
                echo "<li><a href='logout.php'>Logout</a></li>";
            }else{
                ?>
                <li class="dropdown">
                      <a href="#" class="dropdown-toggle" data-toggle="dropdown">Login<b class="caret"></b></a>
                                <div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
                                <script type="text/javascript" src="js/ajaxform.js"></script>
                      <form action="login.php" method="post" class="ajaxform">
                                <label value="Email">Email</label>

                                <input id="email" style="margin-bottom: 15px;" type="text" name="email" size="30" value=<? echo $email;?> />
                                <label value="Password">Password</label>
                                <input id="password" style="margin-bottom: 15px;" type="password" name="password" size="30" value=<?php echo $password;?> />
                                <label value="environment">Environment</label>
                                <?
                                echo "<select name='environment' style='margin-bottom: 15px;' />";
                                    if(isset($_SESSION['environment']) && $_SESSION['environment']=="Prod"){
                                        echo "<option>Demo</option>";
                                        echo "<option selected='true'>Prod</option>";
                                    }elseif(isset($_SESSION['environment']) && $_SESSION['environment']=="Demo"){
                                        echo "<option selected='true'>Demo</option>";
                                        echo "<option>Prod</option>";
                                    }else{
                                        echo "<option>Demo</option>";
                                        echo "<option>Prod</option>";
                                    }
                                ?>
                                </select>
                        <li class="divider"></li>
                        <input class="btn btn-primary" style="clear: left; width: 100%; height: 32px; font-size: 13px; margin-bottom: 15px;" type="submit" name="commit" value="Sign In" />
                                    </form>

                    </div>
                    </li>
                    <?
            }


            ?>
        </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
Login.php

<?
  $email = $_POST['email'];
  $password = $_POST['password'];

  //curl request here!!

  $json_response = curl_exec($curl);
  $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

  if ($status == 200) {
    $_SESSION['account'] = json_decode($json_response);
    $_SESSION['loggedin'] = 'true';
  }else{
    $_SESSION['loggedin'] = 'false';
  }
  curl_close($curl);

您可以做的是将导航条形码放入一个单独的PHP文件中,我们将其称为
navbar.PHP
。然后,通过以下操作将其包含在您的主页上(我们在导航栏周围添加了一个div,以便稍后更新内容):

和JS代码,以:

$.ajax({
  url     : $(this).attr('action'),
  type    : $(this).attr('method'),
  data    : $(this).serialize(),
  success : function( data ) {
    // load new navbar
    $('#navbar-holder').html( data );
  },
  error   : function(){
    alert('Something wrong');
  }
});

如有必要,请随意更改。

session_start()加载到所有页面?是的,经过一点调试,我找到了前半部分。我只需要做下半场。我会马上更新我的问题。所以我只需要弄清楚如何在AJAX调用时刷新导航栏内容。这非常有效,我如何获得非表单帖子的链接来进行相同的调用?比如,如果我想以href(非表单)的形式调用logout.php,我会怎么做?只需在注销页面中使用和,销毁会话
session\u destroy()
以删除会话。然后将用户重定向回某个页面。页面上运行了查询,我正在尝试刷新会话和导航栏。然后,您可以使用logout.php执行类似的操作。只需更改代码中的
if
语句即可销毁会话,然后加载导航栏,就像我们对login.php所做的那样。您可以使用触发对logout.php的ajax调用。
<div id="navbar-holder">
  <?php include 'navbar.php'; ?>
</div>
if ($status == 200) {
  $_SESSION['account'] = json_decode($json_response);
  $_SESSION['loggedin'] = 'true';

  include 'navbar.php';
} else {
  $_SESSION['loggedin'] = 'false';
}
$.ajax({
  url     : $(this).attr('action'),
  type    : $(this).attr('method'),
  data    : $(this).serialize(),
  success : function( data ) {
    // load new navbar
    $('#navbar-holder').html( data );
  },
  error   : function(){
    alert('Something wrong');
  }
});