使用ajax基于2个输入字段的jquery自动完成

时间:2018-04-21 15:00:40

标签: javascript jquery jquery-ui autocomplete

我有一个包含2个输入字段的表单。我想在输入2上使用输入1作为过滤器实现自动完成。所以我需要将两个参数传递给我的cgi脚本。我有这样的问题。我可以单独传递它们但不能同时传递它们。在这里我尝试了:

function fillbox2(){                                                          

$('#input2').autocomplete({                                              
      source: function(request, response ){                                                               
      var frmStr =  {input1:$('#input1').val(),input2:$('#input2').val()};                                                                     
      $.ajax({                                                            
      url: './cgi_temp2.cgi',                                             
      dataType: 'json',                                                   
      data:{frmStr:request.term},                                      
      contentType: "application/json; charset=utf-8",                     

          success: function (data) {                                      
               response ($.map( data.matches, function(item){             
                           return {                                       
                              value: item.info2,                    

                           }                                              
                       }));                                               
              }                                                           
          });                                                             
      },                                                                  

          minLength: 2,                                                   
          select: function(event, ui){                                    
          $("#input2).val(ui.item.value);                             
          return false;                                                   
          }                                                               
  });                                                                     

}       
问题在哪里?它来自我的ajax调用中的“data:”还是“success:”?

1 个答案:

答案 0 :(得分:0)

我可以看到您在“frmStr”中保存输入数据 但是在你的ajax请求中,你这样做了 数据:{frmStr:request.term},这意味着您使用变量“frmStr”作为数据和后端的关键您将拥有frmStr为关键。 你在ajax中的数据看起来应该是那样的

var frmStr =  {
    input1:$('#input1').val(),
    input2:$('#input2').val(),
    requestTerm: request.term
};

然后在ajax

data:{data: frmStr},

这应该可以将数据发送到后端