Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 基于keydown和change的jqueryajax调用?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 基于keydown和change的jqueryajax调用?

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>

下面是标记。我试图实现的是,无论用户在搜索框中键入内容还是更改单选按钮,都会返回AJAX调用;因此,如果我输入“pro”,然后改为“printer”,AJAX就会启动。现在不是,但我也没有在控制台日志中得到任何错误

有人对如何实现这一目标有什么想法吗

用建议的更改更新代码;仍然无法实现单选按钮更改功能

<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);
                }
            });