Javascript 基于keydown和change的jqueryajax调用?
下面是标记。我试图实现的是,无论用户在搜索框中键入内容还是更改单选按钮,都会返回AJAX调用;因此,如果我输入“pro”,然后改为“printer”,AJAX就会启动。现在不是,但我也没有在控制台日志中得到任何错误 有人对如何实现这一目标有什么想法吗 用建议的更改更新代码;仍然无法实现单选按钮更改功能Javascript 基于keydown和change的jqueryajax调用?,javascript,jquery,ajax,Javascript,Jquery,Ajax,下面是标记。我试图实现的是,无论用户在搜索框中键入内容还是更改单选按钮,都会返回AJAX调用;因此,如果我输入“pro”,然后改为“printer”,AJAX就会启动。现在不是,但我也没有在控制台日志中得到任何错误 有人对如何实现这一目标有什么想法吗 用建议的更改更新代码;仍然无法实现单选按钮更改功能 <div id="products_page_wrapper"> <div id="products_page_inner_wrapper"> <script>
<div id="products_page_wrapper">
<div id="products_page_inner_wrapper">
<script>
$(document).ready(function(){
function searchCheck(evt) {
var val = $("input[name=search_method]:checked").val();
var search_type = $("input[name=search_method]:checked").val();
// if printer is selected
if (val == 'Printer') {
$( '#product_search' ).autocomplete({source:'controllers/product_Autocomplete_Search.php?search_type='+search_type, minLength:2})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append("<a>" + item.label+ "</a>")
.appendTo( ul );
};
}else{
$('#product_search').autocomplete({
minLength:2,
source: function (request, response) {
$.ajax({
url: 'controllers/product_Autocomplete_Search.php',
dataType: 'json',
data: {
searchtype: search_type,
term: request.term
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item.label,
cartridge_id: item.cartridge_id,
description: item.description,
json: item,
}
}))
}
});
},
select: function( event, ui ) {
window.location.href = '?view=view_product_detail&id='+ui.item.cartridge_id;
}}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append("<a>" + "<TABLE><TR><TD valign='middle'><img height='60px' src='display/img/products/"+item.label+"_tn.jpg' /></TD><TD valign='middle'> " + item.description+ "</TD></TR</TABLE></a>")
.appendTo( ul );
};
}
};
$('#product_search').keydown(searchCheck);
// Doesn't work:
// $('input[name="search_method"]:radio').on('change', searchCheck);
// Doesn't work:
// $("#search_method_one, #search_method_two").on('change', searchCheck);
// Doesn't work:
//$("input[name=search_method]:radio").change(searchCheck);
//searchCheck();
});
</script>
<form action="<?php echo $site_Config_Url; ?>controllers/product_Search_Process.Controllers.php" method="get">
<div style="padding-bottom:20px;margin-left:auto;margin-right:auto;margin-top:20px;
">
<h1 style="color:#fff;padding:0;margin:0;text-align:center;font-family: 'Arvo', serif;font-size:64px;padding-bottom:15px;border-bottom:5px solid #111;line-height:64px;"><span style="font-weight:normal;">Buy Local.</span> <span style="color:#9acf78;">Save Money!</span></h1>
<div class="clear"></div>
<div id="main_search_wrap">
<div style="padding-left:0px;width:400px;height:108px;float:left;">
<h2 style="margin-bottom:7px;color:#fff;text-align:right;padding:10px;">Search by Printer Brand</h2>
<div style="width:400px;padding-left:20px;float:left;">
<div style="float:left;">
<select name="drop_1" id="drop_1" style="width:300px;">
<option value="" selected="selected" disabled="disabled">Select Printer Brand</option>
<?php getTierOne(); ?>
</select>
</div>
<div style="width:80px;padding-left:5px;padding-top:5px;float:left;">
<span id="wait_1">
<img alt="Please Wait" src="<?php echo $site_Config_Url; ?>display/img/ui/ajax-loader.gif"/>
</span>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
<span id="result_1" style="display: none;"></span>
<span id="result_2" style="display: none;"></span>
</div>
<div style="width:100px;height:115px;float:left;margin-left:50px;margin-right:50px;">
<h3 style="font-size:48px;padding-top:30px;color:#555;text-align:center;">OR</h3>
</div>
<div style="width:400px;height:115px;float:left;" id="searchByBox">
<h2 style="margin-bottom:7px;color:#fff;padding:10px;">Search by Cartridge or Printer</h2>
<div class="clear"></div>
<div style="padding-left:10px;;">
<span style="padding-left:10px;color:#ddd"><input type="radio" id="search_method_one" name="search_method" value="Cartridge" checked="true">Cartridge</span>
<span style="padding-left:20px;color:#ddd"><input type="radio" id="search_method_two" name="search_method" value="Printer">Printer</span>
<div class="clear"></div>
<div style="padding-top:5px;">
<div style="padding-top:5px;float:left;">
<input id="product_search" type="text" name="search_text" style="float:left;width:230px;"/>
</div>
<div id="tester"></div>
<div style="padding-left:18px;float:left;">
<input id="submit_right" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" type="submit" name="submit_right" value="Find + SAVE!" />
</div>
<div class="clear"></div>
</div>
</div><div class="clear"></div>
</div><div class="clear"></div>
</div>
</div>
</form>
<div class="clear"></div>
$(文档).ready(函数(){
功能搜索检查(evt){
var val=$(“输入[name=search_method]:选中”).val();
var search_type=$(“输入[name=search_方法]:选中”).val();
//如果选择了打印机
如果(val==‘打印机’){
$('product_search').autocomplete({source:'controllers/product_autocomplete_search.php?search_type='+search_type,minLength:2})
.数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.data(“item.autocomplete”,item)
.附加(“”)
.附录(ul);
};
}
};
$(“#产品搜索”).keydown(搜索检查);
//不起作用:
//$('input[name=“search\u method”]:radio')。打开('change',searchCheck);
//不起作用:
//$(“#搜索方法#1,#搜索方法#2”)。关于('change',searchCheck);
//不起作用:
//$(“输入[名称=搜索方法]:收音机”)。更改(搜索检查);
//searchCheck();
});
您是否尝试过通过使用Firebug设置一些断点来逐步完成每一行?另外,您提到AJAX调用应该可以工作,但是,您是否检查了web调试工具(例如Firebug、Fiddler、Wireshark)中是否可以看到返回HTTP响应代码200的请求
您是否尝试使用“$.ajax()”的“error”参数?e、 g
你为什么要复制代码并通过两次?哎呀。使用函数。您可以使用.on('keypress',…)作为输入,使用.on('change',…)作为单选按钮。@epascarello感谢您的建议;代码已更新。@nikolap感谢您的建议;我尝试过上面代码注释中反映的类似结果,但没有效果=(是的;我在文章中省略了这些细节以帮助缩短它。代码实际上在一个实时站点上,所以AJAX方面似乎很好;它只是没有检测到单选按钮的更改。伙计,试试DTSTTCPW(做可能可行的最简单的事情)原则,从一个小POC开始,然后从那里开始:
$.ajax({
url: 'https://somesite.com/someurl',
dataType: "json",
data: {
SearchTerm: request.term
},
success: function (data) {
var parsed = JSON.parse(data);
parsed.forEach(function (entry) {
//do something
});
response(something);
},
error: function (message) {
console.log('Error: ' + message);
response('Error: ' + message);
}
});