根据输入值更改AJAX参数

时间:2014-11-17 20:29:39

标签: javascript jquery ajax

我有两个输入与On Change ajax调用绑定。

            <input type="email" id="lookupemail" style="width: 225px;" placeholder="john.smith@ufcfit.com">

            <select id="type" style="width: 150px;">
            <option value="member"> Member </option>
            <option value="lead"> Lead </option>
            </select>

ajax调用工作正常,但似乎没有通过我的查找类型..我的输出格式是否错误?

            <script>
            $("#lookupemail").keyup(function () {
              var lookuptype = $('#type').val();
              var lookupinput = $('#lookupemail').val();
              $.ajax({
              type: "POST",
              url: "includes/dbsearch.php",
              data: {lookuptype: lookupinput},
              success: function(server_response)
              {
                if(server_response != 0) {
                 // 
                } else {
                  //
                }

              }
              });
             }); 
            </script>

通过:

      lookuptype:"conner@asdsafsdf"

而不是..           构件:&#34;康纳@ asdsafsdf&#34;

2 个答案:

答案 0 :(得分:1)

而不是:

data: {lookuptype: lookupinput},

使用类似:

data: {lookuptype: lookuptype, lookupemail: lookupinput},

当使用对象作为ajax调用的data值时,您必须提供key/value对。在您的情况下,您提供了一个键= lookuptype和一个值= whatever-the-user-types-in-email-field。您没有为key/value发送email对。

在服务器端,您可以使用以下键检索数据:

$lookuptype = $_POST['lookuptype'];
$lookupemail = $_POST['lookupemail'];

注意

如果您打算让lookuptype选择单个key/value对的密钥,那么您必须声明一个对象操作它:

          var lookuptype = $('#type').val();
          var lookupinput = $('#lookupemail').val();
          var fData = {};                      //<<<<<======
          fData[lookuptype] = lookupinput;    //<<<<<<======
          $.ajax({
          type: "POST",
          url: "includes/dbsearch.php",
          data: fData,                  //<<<<<<<=========

答案 1 :(得分:0)

如果要将对象作为数据参数传递,并将变量作为属性名称,则必须执行以下操作:

var ajaxData = {};
ajaxData[lookuptype] = lookupinput;

总的来说,你应该这样做:

$("#lookupemail").keyup(function () {
  var lookuptype = $('#type').val();
  var lookupinput = $('#lookupemail').val();
  // Create the data object
  var ajaxData = {};
  ajaxData[lookuptype] = lookupinput;
  $.ajax({
    type: "POST",
    url: "includes/dbsearch.php",
    data: ajaxData,
    success: function (server_response) {
      if (server_response != 0) {
        // 
      } else {
        //
      }
    }
  });
});

既然你知道如何做到这一点,那么我告诉你,这是一个坏主意,因为服务器不知道要传递给它的数据中要查找的属性。做PeterKA建议的事情会更好。