始终返回未定义的值

时间:2014-05-02 21:34:28

标签: javascript jquery html ajax

我正在使用jQuery向服务器发送Ajax请求以保存表单中输入的值。在我被卡住的部分下面。 HTML是

<span class="no-margin multiple Date_Off" style="margin-left: 104px;">
  <input type="text" value="" /><input type="text" />
  <input type="text" value="-" /><input type="text" />
  <input type="text" /><input type="text"  value="-" />
  <input type="text" /><input type="text" /><input type="text" />
  <input type="text" />
</span>

我尝试过使用jQuery发送请求。我想做的就是这样的事情

  1. 我想将表单中的值保存到输入字段所具有的Column_Name。在多个输入字段中,我没有使用输入名称。相反,我使用的classname与数据库中的Column_Name相同。

  2. 为此,我使用$(this).parent().attr('class');。如果我在警报中使用它,它会给我结果没有错误。但是如果我在代码中使用它,它会给我undefined

  3. 我想将每个输入的值附加到字符串中,以将其保存为单个字符串。

  4. 这是我到目前为止所尝试的内容

    var input = $('input');
    input.change(function () {
    // Input click function...
     if ($(this).parent().attr('class')
                        .replace(' multiple ', '')
                        .replace('no-margins', '') == 'Date_Off') {
      // Date Time for the office work!
      var value = '';
      value = $(this).parent().find('input').each(function (index, ele) {
         value += ele.val();
      });
         send_request('Date_Off', value);
    // Below is the else condition, to execute only when the input is single
    // Like a single string input and not like the one in image
    // That's why I am using attr('name') for that.
     } else {
         send_request($(this).attr('name'), $(this).val());
     }
    });
    

    但它返回的内容在Query结构中始终是未定义的。这是

    的功能
    function send_request(input_name, value) {
      $.ajax({
        url: '/ajax_requests/save_form',
        data: 'input_name=' + input_name + '&form_id=' +     
        $('input[type=hidden]').val() + '&value=' + value,
        error: function () {
          $('.main-content').append(
             'There was an error in request. 
              Please contact your website Developer to fix it.'
           );
        },
        success: function () {
    
        }
      });
    }
    

    代码执行的图像

    enter image description here

    焦点输入为1. Date。并且控制台显示内部服务器错误。因为jQuery使用不是Column_Name的input_name=undefined发送了请求。

    我为此创建了一个(迷你)小提琴:http://jsfiddle.net/afzaal_ahmad_zeeshan/EHWqB/

    这里有任何帮助吗?

2 个答案:

答案 0 :(得分:0)

在这一行中,您试图获取输入的名称

send_request($(this).attr('name'), $(this).val());

我在代码中的任何地方都没有看到“name”属性,我认为您想要的是获取父级的类吗?

send_request($(this).parent().attr('class'), $(this).val());

答案 1 :(得分:0)

对于您发布的小提琴,有两个错误。第一个是你在调用ele.val(),但是在这个上下文中ele不是jQuery对象 - 所以你需要从中获取value属性。第二个是jQuery each函数对一个对象数组进行操作,它的返回值是该对象数组。您不希望您的value(应该是字符串)接受该返回值。这是updated, working fiddle

    input.change(function () {
    // Input click function...
    var value = '';
    $(this).parent().find('input').each(function (index, ele) {
        value += ele.value;
    });
    send_request('Date_Off', value);
});