Javascript 单选按钮更改无法正常工作
我有一个带有值的单选按钮:“按标题”和“按演员”。如果用户按标题选择,则文本框自动完成显示电影列表文本框中包含单词user type,如果用户选择“By actor”,则相同的文本框将显示演员列表。此外,在“按标题”的情况下,有一个按钮“按此标题搜索电影”,它将打开一个新窗口,显示包含用户在文本框中插入的单词的电影列表。(在“按演员”的情况下,将显示相同的按钮,该按钮显示该演员的电影列表) 问题: 如果用户选择“按演员”,并在文本框中输入演员名称,如“汤姆·克鲁斯”,然后单击“此演员的电影”按钮,将打开一个新窗口(“movielist.php”),显示“汤姆·克鲁斯”的电影列表。现在,如果用户更改单选按钮并选择“按标题”并编写一个标题名称,如“冻结”,然后单击按钮“按此标题播放电影”,新窗口将打开,但它显示的是“汤姆·克鲁斯”拍摄的电影列表,而不是包含单词“冻结”的电影列表 此图像可能会更清楚地显示我的问题: 代码如下:Javascript 单选按钮更改无法正常工作,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个带有值的单选按钮:“按标题”和“按演员”。如果用户按标题选择,则文本框自动完成显示电影列表文本框中包含单词user type,如果用户选择“By actor”,则相同的文本框将显示演员列表。此外,在“按标题”的情况下,有一个按钮“按此标题搜索电影”,它将打开一个新窗口,显示包含用户在文本框中插入的单词的电影列表。(在“按演员”的情况下,将显示相同的按钮,该按钮显示该演员的电影列表) 问题: 如果用户选择“按演员”,并在文本框中输入演员名称,如“汤姆·克鲁斯”,然后单击“此演员的电影”按钮
<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%
的第二次查询中,我还将caseactor
和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;
}