Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取文本框值而不是自动完成值javascript_Javascript_Php_Jquery_Autocomplete - Fatal编程技术网

获取文本框值而不是自动完成值javascript

获取文本框值而不是自动完成值javascript,javascript,php,jquery,autocomplete,Javascript,Php,Jquery,Autocomplete,我有一个带有jQuery自动完成功能的文本框。我需要的是:当我点击按钮Movies by this title时,我希望看到电影列表包含文本框中的术语,即使在auto completion中找不到该术语,而我只通过auto completion select查看电影列表 下图显示了我从自动完成列表中选择一部效果良好的电影的情况: 当我只写一些单词时就是这种情况,例如,如果用户忘记了全名或无法在自动完成列表中找到: 代码如下: <script type="text/javascript"&

我有一个带有jQuery自动完成功能的文本框。我需要的是:当我点击按钮Movies by this title时,我希望看到电影列表包含文本框中的术语,即使在auto completion中找不到该术语,而我只通过auto completion select查看电影列表

下图显示了我从自动完成列表中选择一部效果良好的电影的情况:

当我只写一些单词时就是这种情况,例如,如果用户忘记了全名或无法在自动完成列表中找到:

代码如下:

<script type="text/javascript">
var selected;

$(document).ready(function () {
      $("input[id='selectType']").change(function(){
               if ($(this).val() == "byTitle") {
                    $("#m_scents2").hide();
                    $("#btnMove").show();
                    $("#m_scents").show();
                    $("#q").focus();
                    $("#q").autocomplete({
                        minLength: 0,
                        delay:5,
                        source: "filmsauto.php",
                        focus: function( event, ui ){
                             event.preventDefault(); 
                             return false;
                        },
                select: function( event, ui ) {
                               window.selected = ui.item.value;
                        }
                    });
  }
$('#btnMove').on('click', function (e) {
           popupCenter("movieBytitle.php","_blank","400","400");
  });
这是movieBytitle.php:

<script type="text/javascript">
 var selected = parent.window.opener.selected; 
 $.ajax({
         url: 'childfilm.php',
         datatype: "json",
         data:{p:selected},
         success: function(response) {      
                     $("#field").html(response);
                   }
        });

</script>
这是childfilm.php:

if(isset($_GET['p']) && !empty($_GET['p'])){
    include('imdbConnection.php');
    $query = $conn->prepare("SELECT DISTINCT movieName, year, posterLink FROM film_info WHERE movieName LIKE :p");
    $query->execute(array(':p' => '%'.$_GET['p'].'%'));
}
?>

<html>
<head>
....
</head>

<body>
 <div class= "movielist"> 
  <table id= "films">
    <tr>
        <th></th>
        <th>year</th>
        <th>Title</th>
    </tr>
    <?php while($row = $query->fetch(PDO::FETCH_ASSOC)): ?>  //THIS IS LINE 53 WHERE THE ERROR IS SHOWN IN THE SECOND IMAGE
    <tr>
        <td><img class='imdbImage' id="image" src='imdbImage.php?url=<?php echo $row['posterLink']; ?>' alt="" /></td>
        <td><label id='year'><?php echo $row['year']; ?> </label></td>

        <td><a href="movie.php?title=<?php echo urlencode($row['movieName']); ?>"><?php echo $row['movieName']; ?></a></td>

    </tr>
    <?php endwhile; ?>
  </table>    
 </div>
</body>
</html>
有人能告诉我如何获得文本框值而不是自动完成值吗

更新:最终解决方案 由于问题太长,最终的解决方案是在评论中实现的,我在这里更新了答案:感谢@lolka_bolka,这最终帮助了我:将p的值更改为->$'q'。val而不是传递所选的自动完成文本..:

编辑:

根据OP更新,我们在评论中进行了对话,请阅读

我认为,您的问题是,如果没有$\u GET[p],那么$query将不存在,因此您不能将其用作对象

<html>
    <head>
        ....
    </head>
    <body>
        <div class= "movielist"> 
            <table id= "films">
                <tr>
                    <th></th>
                    <th>year</th>
                    <th>Title</th>
                </tr>
                <?php
                if (isset($_GET['p']) && !empty($_GET['p'])) {
                    include('imdbConnection.php');
                    $query = $conn->prepare("SELECT DISTINCT movieName, year, posterLink FROM film_info WHERE movieName LIKE :p");
                    $query->execute(array(':p' => '%' . $_GET['p'] . '%'));
                    if ($query->rowCount()) {
                        //If there are no $_GET["p"] then there wont be $query,
                        //So you can not fetch it!!!
                        while ($row = $query->fetch(PDO::FETCH_ASSOC)):
                            ?> 
                            <tr>
                                <td><img class='imdbImage' id="image" src='imdbImage.php?url=<?php echo $row['posterLink']; ?>' alt="" /></td>
                                <td><label id='year'><?php echo $row['year']; ?> </label></td>

                                <td><a href="movie.php?title=<?php echo urlencode($row['movieName']); ?>"><?php echo $row['movieName']; ?></a></td>

                            </tr>
                            <?php
                        endwhile;
                    } else {
                        echo '<td colspan="3">Sorry, there are no film like this</td>';
                    }
                }
                ?>
            </table>    
        </div>
    </body>
</html>

我认为matix是matrix。不管怎么说,它是一个接缝,在你的变量不是一个对象,你想用什么作为对象。请给我们看一下您的儿童电影。是吗?虽然$row=$query->FETCPDO::FETCH_ASSOC:@lolka_bolka:matix不是我故意在中显示的矩阵,如果名称未处于自动完成状态,我不会得到任何电影列表。。e、 我可能只在文本框中键入,我希望看到所有电影都包含我知道这很愚蠢,但一般来说,我指的是在自动完成列表中找不到txtbox中的单词的情况。。。。关于你的第二个问题:是的,这是第53行,请看我的答案。如果没有$\u GET[p],您就没有$query,因此无法获取该对象,因为该对象不存在。:感谢您的帮助,但如果在自动完成中找不到文本框中的术语,我不想向用户显示该消息。。我在问题中问的是,如何获取文本框值,不管它是什么!我不在乎它是否不在自动完成列表中。。我需要的一个例子是IMDb或amazon的功能。。如果你在IMDB的搜索框中键入一个单词,即使你没有从自动完成列表中选择,也只需写下..,那么当你按下搜索按钮时,它将显示电影列表中包含的术语…我希望我能澄清我的问题:不,我完全不清楚,您试图实现的目标:如果您想要获取文本框文本,那么可以使用jQuery中的$'q'.text。如果您希望在发送表单后获得它,那么您可以通过$_POST[q]访问它,如果您的表单方法是POST,如果它是get,那么$_get[q];在PHP中。但是我想,你知道这些。好吧,我不想在我发送表单后得到它,我想在我点击这个标题的按钮后马上得到它。。我试着用$'q'.val;以前,但我没有尝试使用.text,因此我现在将执行此操作,并将通知您。。谢谢:算了吧,我错了。应该是。瓦尔,那应该行得通。嗯,他们中没有一个行得通。。我想我的主要问题是我不知道我必须在哪里写$'q'.val;