未捕获的ReferenceError:' somevar'未定义

时间:2015-06-03 10:39:08

标签: javascript php jquery mysql ajax

我试图通过ajax调用将一些数据插入到mysql中,但是当我试图从我的表单中获取数据时,javascript会抛出这个错误"未捕获的ReferenceError:anjelis未定义"在第一个变量上

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>aloooooooooooooo!!!!!!!!!</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="css.css">
    <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
    <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
    <script src="js/main.js"></script>
    <script src="js/ajax.js"></script>
    <script>
    $(document).ready(function(e){
        $.ajaxSetup({cache:false});
        setInterval(function(){$('#chatlog').load('logs.php');},1000);
        setInterval(function(){$('#user_list').load('user_list.php');},1000);
    });
    function submitChat(){
    var uname=<?php echo $_SESSION['username']?>;
    var msg=form.msg.value;
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            document.getElementById('chatlog').innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open('GET','insert.php?username='+uname+'&msg='+msg,true);
    xmlhttp.send();
    }

    </script>
</head>

身体

<body>
<nav class="navbar navbar-inverse">
  <div class="container">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">ChatCY</a>
    </div>
          <ul class="nav navbar-nav navbar-right">
            <li><?php if(!isset($_SESSION['username'])){echo '<a href="login.php">Login/Signin</a>';}else{
                echo'<a href="logout.php">Logout</a>';}?></li>
          </ul>         
      </div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="panel panel-default">
    <div id="chatlog" class="panel-body"></div>
 </div>
 </div>
 <div class="col-md-2">
    <div class="panel panel-default">
    <div id="user_list" class="panel-body"></div>
 </div>  
 </div>
 </div>
        <div class="row">
         <div class="col-md-8">
         <form class="form-inline">
         <form name="form" class="form-group" onsubmit="return false;">
        <input type="textarea" class="form-control" name="msg" style="width:90%;"<?php if(!isset($_SESSION['username'])){
            echo 'disabled="disabled" placeholder="You must be logged in to chat .."';}?>></input>            
        <button type="button" class="btn btn-default" name="send" <?php if(!isset($_SESSION['username'])){
            echo 'disabled="disabled"';}?> onClick="submitChat();">send</button>
        </form>
        </form>
        </div>
     </div>       
</div>

3 个答案:

答案 0 :(得分:2)

您的代码中存在很多问题。

  1. 变量中缺少引号。在这里添加引号:

    var uname = "<?php echo $_SESSION['username']?>";
    
  2. 会话未启动。使用以下命令启动会话:

    session_start();
    
  3. 尽量不要混淆PHP和HTML。保持分开。不要使用echo来编写HTML标记。

  4. 没有<input />有一个结束标记,并且没有<input type="textarea" ...应该用<input type="text"替换。
  5. 使用jQuery或其他一些很棒的库来执行复杂的函数,比如AJAX调用等等。通过为所有浏览器提供功能和减少代码混乱,这使您和开发人员的生活变得更轻松。

    $.ajax(function () {
        "url": "/",
        // Blah Blah
    });
    

答案 1 :(得分:1)

你错过了代码 session_start(), 那你可以用另一种方式做,在你的html中创建一个inpu标签

<input type='hidden' id='uname' value="<?php echo $_SESSION['username']?>">

在js 得到你的身份

var uname = $('#uname').val();

答案 2 :(得分:0)

错过了引号 -

 var uname= "<?php echo $_SESSION['username']?>";
 var form = $('form.form-group');

如果是

var uname = somevar;

somevar将是未定义的。

您没有向函数或函数内部传递或定义form