2016-06-27 4 views
0

JavaScript変数をAJAXでPHPに渡そうとしています。それは働かないし、私が間違っていることを理解することができません。私はいつも次のエラーを取得しています:javascriptからajax postメソッドを使用してphpに変数を渡す

1)注意:未定義の変数:行のIDで... \ movies.php 174

2)警告:mysqli_fetch_array()は、パラメータ1をmysqli_resultされることを想定してい... \ movies.phpで指定されたブール値を行176に表示します。

私はchrome開発ツールを使用していますが、AJAX呼び出しが成功したことがわかります。

<?php 
session_start(); 
include_once 'dbconnect.php'; 

if(isset($_POST['id'])){ 
    $id = $_POST["id"]; 
    echo $id;        
} 
?> 

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <meta content="width=device-width, initial-scale=1.0" name="viewport" > 
    <!--Insert sidebar CSS--> 
    <link rel="stylesheet" href="css/sidebar.css" type="text/css" /> 
    <!--Insert Custom CSS--> 
    <link rel="stylesheet" href="css/style.css" type="text/css"/> 
</head> 
<body> 

<!-- Start of navbar --> 
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
    <div class="container-fluid"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar1"> 
       <span class="sr-only">Toggle navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a class="navbar-brand" href="index.php"></a> 
     </div> 
     <div class="collapse navbar-collapse" id="navbar1"> 
      <ul class="nav navbar-nav navbar-right"> 
       <?php if (isset($_SESSION['usr_id'])) { ?> 
       <li><h4 class="navbar-text"></h4></li> 
       <li><a href="store.php">Store</a></li> 
       <li><a href="settings.php"><i class="fa fa-cog" aria-hidden="true"></i> 
Account</a></li> 
       <li><a href="logout.php"><i class="fa fa-power-off"></i> Log Out</a></li>    
       <?php } else { ?> 
       <li><a href="login.php"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
       <li><a href="register.php"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li> 
       <?php } ?> 
      </ul> 
     </div> 
    </div> 
</nav> 


    <div id="wrapper"> 

     <!-- Sidebar --> 
     <div id="sidebar-wrapper"> 
      <ul class="sidebar-nav"> 
       <li class="sidebar-brand"> 
        <a href="#"> 
         Welcome <?php echo $_SESSION['usr_name'];?>! 
        </a> 
       </li> 

       <li> 
        <a href="store.php" class="active">Edit Movies</a> 
       </li> 
       <li> 
        <a href="users.php" class="active">Edit Users</a> 
       </li> 

       <li> 
         <a href="movies.php">Movies Gallery</a> 
       </li> 
       <li> 
        <a href="#">My Rents</a> 
       </li> 
       <li> 
        <a href="#">All Rents</a> 
       </li> 
       <li> 
        <a href="#">Account</a> 
       </li> 
       <li> 
        <a href="#">Contact</a> 
       <li> 
        <a href="#">Log out</a> 
       </li> 
      </ul> 
     </div> 
     <!-- /#sidebar-wrapper --> 

     <!-- Page Content --> 
     <div id="page-content-wrapper"> 
      <div class="container-fluid" id="movie-catalog"> 
       <div class="row"> 

        <?php 
         $result = mysqli_query($con, "SELECT * FROM movies"); 

         while($row = mysqli_fetch_array($result)){ 
          echo ' 
          <div class="col-md-3 portfolio-item"> 
           <a href="#"> 
            <img class="img-responsive img-center cover" src='.$row['cover_path'].' style="width:150px;height:200px;" alt=""> 
           </a> 
           <h3 class="text text-center"> 
            <a href="#">'.$row['title'].'</a> 
           </h3> 
           <div class="centered"> 
            <input class="btn btn-info text-center info-button" type="submit" data-id="'.$row['id'].'" data-toggle="modal" name="id" value="Info" /> 
            <button type="button" class="btn btn-warning center">Rent</button> 
           </div><br> 
          </div>'; 
         } 

        ?> 

       </div> 
     <!-- /.row --> 

       <!-- Pagination --> 
     <div class="row text-center"> 
      <div class="col-lg-12"> 
       <ul class="pagination"> 
        <li> 
         <a href="#">&laquo;</a> 
        </li> 
        <li class="active"> 
         <a href="#">1</a> 
        </li> 
        <li> 
         <a href="#">2</a> 
        </li> 
        <li> 
         <a href="#">3</a> 
        </li> 
        <li> 
         <a href="#">4</a> 
        </li> 
        <li> 
         <a href="#">5</a> 
        </li> 
        <li> 
         <a href="#">&raquo;</a> 
        </li> 
       </ul> 
      </div> 
     </div> 
     <!-- /.row --> 

      </div> 
     </div> 
     <!-- /#page-content-wrapper --> 
    </div> 
    <!-- /#wrapper --> 


    <!-- Modal --> 
     <div class="modal fade" id="myModal" role="dialog"> 
     <div class="modal-dialog modal-md"> 
      <div class="modal-content"> 

      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h4 class="modal-title">Movie Info</h4> 
      </div> 

      <div class="modal-body"> 
       <div class="row"> 
        <p class="modal-text"></p> 
        <?php 


         $movie = mysqli_query($con, "SELECT * FROM movies WHERE id=".$id); 

         $row = mysqli_fetch_array($movie); 

         echo ' 
         <div class="col-md-4"> 
          <div class="info-image"> 
          <img class="img-responsive" src="'.$row['cover_path'].'" style="width:150px;height:200px;"> 
         </div> 
         </div> 

         <div class="col-md-4"> 
          <h4>Title: '.$row['title'].'</h4> 
          <h4>Director: '.$row['director'].'</h4> 
          <h4>Year: '.$row['d'].'</h4> 
          <h4>Description: '.$row['description'].'</h4> 
          <a href=""><img class="imdb-img" src="images/IMDb-Icon.png" style="width:80px;height:80px;"></a> 
          <a href=""><img class="imdb-img" src="images/youtube_logo.png" style="width:60px;height:40px;"></a> 
         </div> 
        '; ?> 
       </div> 
      </div> 

      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
      </div> 

      </div> 
     </div> 
     </div> 

    <!-- Modal end --> 

    </body> 

    <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script> 

    <!-- Menu Toggle Script --> 
    <script> 
    $(document).on("click", ".info-button", function() { 

     var myBookId = $(this).data('id'); 
     $(".modal-body .modal-text").text(myBookId); 

     var id = myBookId.toString(); 
     //alert(variableToSend); 

     $.ajax({ 
     url : "movies.php", 
     type: "POST", 
     data : {"id" : id}, 
     success: function(data) 
     { 
      //data - response from server 
      alert(data); 
      $('#myModal').modal('show'); 
     } 

    }); 


    });   
    </script> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 

    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 

    <!-- Insert Font-Awesome --> 
    <script src="https://use.fontawesome.com/2ce34ad1b9.js"></script> 

</html> 
+0

'var myBookId = $(this).data( 'id');'で対象となる要素は 'id'を持たない。 –

+1

このコードブロック 'if(isset($ _ POST ['id'])){...}'は、AJAXの呼び出しと処理をすべて同じページ内で行っているようです。あるページでAJAX呼び出しを行い、それを別のページで処理します。 –

答えて

1

ajaxで呼び出すには別のPHPファイルを作成する必要があります。
このファイルは、#myModal divの内部コンテンツのみを生成します。
このdivが、ここでは空でなければなりません:<div class="modal fade" id="myModal" role="dialog"></div>

// This retreives the data-id 
var myBookId = $(this).attr('data-id'); 

$.ajax({ 
    url : "movies-modal.php", // The other php filename here 
    type: "POST", 
    data : {"id" : myBookId}, 
    success: function(html) 
    { 
     $('#myModal').html(html); 
     $('#myModal').modal('show'); 
    } 
}); 
+0

その後、$ id変数をmovies.phpファイルに渡すことはできますか? –

+1

答えを更新しました。 ;) –

+0

私はモーダルのコードをmovies-modal.phpに移動する必要がありますか? –

0

間違って何を言っています:

mysqli_fetch_array()あなたは「ブール が

与えられ、パラメータ1がmysqli_resultされることを想定してい結果を渡す(真または偽のいずれか)、それが必要ですmysqli_fetch_array (mysqli_result $result [, int $resulttype = MYSQLI_BOTH ])

mysqli_fetch_array()

だからあなたのコードは次のようになります。彼らは異なることを意味していますとしても

//returns names and index numbers 
while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ 
    echo $row[1]; 
    echo $row['title']; 
} 

//or if you just want to use the associative names 
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo $row['title']; 
} 

は、あなたは、PHPでの単一引用符または二重引用符と一致している必要があります。参照してください:What is the difference between single-quoted and double-quoted strings in PHP?

+0

スペックの大括弧は 'オプション'を意味します。クエリが失敗した場合でも 'false'' $ result'を使用します。 –

+0

右あまりにもPDOと準備されたステートメントを使用するだけに慣れていた。彼の質問が失敗したようですが、とにかく誰かが答えたようです! –

関連する問題