Javascript 单选按钮更改无法正常工作

Javascript 单选按钮更改无法正常工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个带有值的单选按钮:“按标题”和“按演员”。如果用户按标题选择,则文本框自动完成显示电影列表文本框中包含单词user type,如果用户选择“By actor”,则相同的文本框将显示演员列表。此外,在“按标题”的情况下,有一个按钮“按此标题搜索电影”,它将打开一个新窗口,显示包含用户在文本框中插入的单词的电影列表。(在“按演员”的情况下,将显示相同的按钮,该按钮显示该演员的电影列表) 问题: 如果用户选择“按演员”,并在文本框中输入演员名称,如“汤姆·克鲁斯”,然后单击“此演员的电影”按钮

我有一个带有值的单选按钮:“按标题”和“按演员”。如果用户按标题选择,则文本框自动完成显示电影列表文本框中包含单词user type,如果用户选择“By actor”,则相同的文本框将显示演员列表。此外,在“按标题”的情况下,有一个按钮“按此标题搜索电影”,它将打开一个新窗口,显示包含用户在文本框中插入的单词的电影列表。(在“按演员”的情况下,将显示相同的按钮,该按钮显示该演员的电影列表)

问题: 如果用户选择“按演员”,并在文本框中输入演员名称,如“汤姆·克鲁斯”,然后单击“此演员的电影”按钮,将打开一个新窗口(“movielist.php”),显示“汤姆·克鲁斯”的电影列表。现在,如果用户更改单选按钮并选择“按标题”并编写一个标题名称,如“冻结”,然后单击按钮“按此标题播放电影”,新窗口将打开,但它显示的是“汤姆·克鲁斯”拍摄的电影列表,而不是包含单词“冻结”的电影列表

此图像可能会更清楚地显示我的问题:

代码如下:

<div id="m_scents" class="field">
   <label style="margin-bottom:10px;" for="m_scnts"></label>
    <p>
     <input class="autofill4" type="textbox" name= "q27[]" id="q" placeholder="Enter movie, actor or director name here" />
     <input type="button" value="Search" id="btnSearch" />
   </p>
 </div>

$(document).ready(function () {
      $("input[id='selectType']").change(function(){
               $("#q").val('');

               if ($(this).val() == "byTitle") {
                    $("#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;
                        }
                    });

                 } else 

                   if ($(this).val() == "byActor"){
                             $("#m_scents").show();
                             $("#q").focus();
                             $("#q").autocomplete({
                                 source: "actorsauto.php",
                                 minLength: 2,
                                 focus: function( event, ui ){
                                      event.preventDefault(); 
                                      return false;
                                 },
                                 select: function (event, ui){ 
                                      window.selectedVal = ui.item.value;
                                 }
                             }); 
  } 

 $('#btnSearch').on('click', function (e) {
           window.textbox = $('#q').val();
           popupCenter("movielist.php","_blank","400","400");
  });


$(文档).ready(函数(){ $(“输入[id='selectType'])。更改(函数(){ $(“#q”).val(“”); if($(this.val()=“byTitle”){ $(“#m#U气味”).show(); $(“#q”).focus(); $(“#q”)。自动完成({ 最小长度:0, 延误:5, 来源:“filmsauto.php”, 焦点:功能(事件、用户界面){ event.preventDefault(); 返回false; }, 选择:功能(事件、用户界面){ window.selected=ui.item.value; } }); }否则 if($(this.val()=“byActor”){ $(“#m#U气味”).show(); $(“#q”).focus(); $(“#q”)。自动完成({ 来源:“actorsauto.php”, 最小长度:2, 焦点:功能(事件、用户界面){ event.preventDefault(); 返回false; }, 选择:函数(事件,ui){ window.selectedVal=ui.item.value; } }); } $('btnSearch')。在('click',函数(e){ window.textbox=$('#q').val(); popupCenter(“movielist.php”,“_blank”,“400”,“400”); });
这是movielist.php:

<div id= "field"
</div>
 <script type="text/javascript">

  var textbox = parent.window.opener.textbox;
 $.ajax({
         url: 'childfilm.php',
         datatype: "json",
         //I FEEL THE PROBLEM IS IN THE LINE BELOW WHERE ALL 3 VALUES ARE PASSED IN CASE OF CLICKING ANY BUTTON.. 
         data:{p:textbox}, 
         success: function(response) {     
                     $("#field").html(response);
                   }
        });
</script>*


正如我试图解释的,你可以这样做

阿贾克斯:

变量searchType应在每次更改研究类型时更新

var searchType = parent.window.opener.searchType; 
var textbox = parent.window.opener.textbox;
 $.ajax({
    url: 'childfilm.php',
    datatype: "json",
    data:{ q:textbox, t:searchType}, 
    success: function(response) {     
        $("#field").html(response);
    }
});
PHP:


我不明白为什么你有这么多按钮/变量/等等。它们几乎做同样的事情。你可以有一个按钮和两个变量(searchText,searchType)。在你的
PHP
中,只要根据研究的类型更改你的请求就行了,不是吗?@MamaWalter:谢谢你的观点,你是对的,我把它改为只有一个按钮:)但是我的问题是另外一件事..你的问题是
$\u GET['q']
总是设置为,并且在应该设置时不为空。如果您按照我的建议为不同的研究使用相同的变量,并根据研究类型执行正确的请求,您将避免出现问题。@MamaWalter:谢谢您的帮助。.我更新了代码,您能看一下吗?(我的问题是,我不知道应该在childfilm.php中使用什么条件,以便它能够识别何时应该运行查询以按标题选择电影..以及何时运行查询以按演员获取电影..非常感谢您的时间和帮助..我尝试了您的代码,但当我单击“搜索”按钮时,它会打开一个空窗口!(在这两种情况下:按标题或按参与者)…我认为在主页中定义searchType变量可能是我的错误。我这样做:
window.searchType=$('input:radio[name=source]:checked').val();
在搜索点击功能中..在浏览器控制台中检查ajax请求返回的内容,这可能是我的PHP中的语法错误,我没有测试它。我通过F12检查了领事,但没有错误:|你的浏览器是什么?检查对
childfilm.PHP
的请求返回的内容我在你的PHP代码中唯一更改的内容是
%:p%
在对
%:q%
的第二次查询中,我还将case
actor
movie
更改为实际名称
byActor
byTitle
var searchType = parent.window.opener.searchType; 
var textbox = parent.window.opener.textbox;
 $.ajax({
    url: 'childfilm.php',
    datatype: "json",
    data:{ q:textbox, t:searchType}, 
    success: function(response) {     
        $("#field").html(response);
    }
});
<?php
$searchText = (isset($_GET['q'])) ? $_GET['q'] : "";
$searchType = (isset($_GET['t'])) ? $_GET['t'] : ""; /* type of research */

 if($searchText !== "")
 {

  switch ($searchType) 
  {
    case 'byActor':
      $query = "SELECT DISTINCT movieName FROM cast_movie WHERE castName = :q";
      break;

    case 'byTitle':    
    default:
      $query = "SELECT DISTINCT movieName FROM film_info WHERE movieName LIKE :q";
      $searchText = "%".$searchText."%";
      break;
  }

  try
  {
    include('imdbConnection.php');
    $sql = $conn->prepare($query);
    $sql->execute(array(':q' => $searchText));
    $html = "";

    while($rows = $sql->fetch(PDO::FETCH_ASSOC))
    {
      $html .= '<a href=movie.php?title="' . $rows['movieName'] . '">' . $rows['movieName'] . '</a><br />';
    }

  } 
  catch(PDOException $e)
  {
    echo 'ERROR: ' . $e->getMessage();
  }

   echo $html;       
   exit;
}