【问题标题】:The object in change function is not defined for ajax data更改函数中的对象未为 ajax 数据定义
【发布时间】:2014-03-17 00:24:24
【问题描述】:

我正在尝试获取更改时输入元素的值:

HTML:

<li><input type="number" id="point" value="<?php echo $game['point']; ?>"></li>

jQuery:

$(function(){
    $('#button-ajax').click(function(){
        var _pointObj = $('#point');

        _pointObj.bind('change', function(){
            var pointObj= $(this).val();
       });
        $.ajax({
          type: "POST",
          url: "<?php echo base_url('index.php/league/ajax_call') ?>",
          dataType: "html",
          data: { 
            point: pointObj,
            isAjax: 1
            },
            success: function(result){
                $('#skeModal').modal('hide');
            }
        });
        return false;
    });
});

但我收到以下错误: 未捕获的 ReferenceError:未定义 pointObj

你们觉得我在这里做错了什么?

谢谢!

【问题讨论】:

  • 你想做什么
  • 您是否尝试在更改输入字段或单击按钮时执行 ajax 请求
  • @ArunPJohny 我试图在通过 ajax 单击 someButton 时将此值发布到控制器函数(当然更改或未更改用户输入的值)
  • 然后看我的回答...不需要更改处理程序
  • 是的,那将是一堆意大利面条代码......谢谢!

标签: jquery ajax input


【解决方案1】:

您的变量超出范围。您在处理程序内声明pointObj,然后尝试在处理程序外使用该变量。还需要注意的是,此处理程序绑定在单击按钮上,因此更改单击此按钮之前的值不会触发更改事件。

简而言之,将你的变量声明更高一级:

var pointObj;

_pointObj.bind('change', function(){
        pointObj= $(this).val();
   });

如果您只是想在单击按钮时获取select 元素的值,请使用val()

var currentPoint = $("#point").val();

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是在单击按钮时使用输入字段的值发送 ajax 请求

    $(function () {
        $('#button-ajax').click(function () {
            var _pointObj = $('#point');
    
            var pointObj = _pointObj.val();
            $.ajax({
                type: "POST",
                url: "<?php echo base_url('index.php/league/ajax_call') ?>",
                dataType: "html",
                data: {
                    point: pointObj,
                    isAjax: 1
                },
                success: function (result) {
                    $('#skeModal').modal('hide');
                }
            });
            return false;
        });
    });
    

    在您的情况下,变量 pointObj 是更改回调方法的本地变量,但是当调用单击处理程序时,未声明该变量,这是错误的原因。

    【讨论】:

      【解决方案3】:

      就像其他人提到的那样,您的 pointObj 声明存在范围问题。如果您想要输入字段上的单击和更改事件,您也可以这样编写。此外,您正在尝试将 change 事件绑定到 click 事件中。

          // Generic Function to call for each. 
      function updatePoints() {
      
          $('#button-ajax').attr('disabled', true);
      
          var pointObj = $('#point').val(),
              data = {
                  point: pointObj,
                  isAjax: 1
              };
      
          $.ajax({
              type: "POST",
              url: "http://www.someurl.com",
              dataType: "html",
              data: data,
              error: function(status) {
                  // console.log(status);
                  $('#button-ajax').attr('disabled', false);
              }
          }).done(function(){
              $('#skeModal').modal('hide');
          });
      }
      
      $(function () {
      
          // Bind Your Click of the Button
          $('#button-ajax').on('click', function(e){
              e.preventDefault();
              updatePoints();
          });
      
          // Bind your change event for the input
          $('#point').change(function(){
              updatePoints();
          });
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多