使用ajax映射数据返回零

时间:2017-11-16 20:25:26

标签: javascript jquery html ajax

我一直在使用ajax从表单提交时获取输入值,但是当我查看控制台时,它会以0的形式返回。我对ajax总体上并不太熟悉,所以我不确定我是否正确使用this或者我在其他地方是否有错误。

这就是我所拥有的:

JS:

jQuery(this).find(".form-item").on("submit", function(e) {
    var $this = jQuery(this);
    if (this.checkValidity()) {
      e.preventDefault();
      $.ajax({
        url: Config.ajaxurl,
        type: 'POST',
        dataType: 'json',
        accepts: 'application/json',
        context: this,
        data: {
          action: 'process_form',
          form_info: {
            "input_18_16": $(this).parents('.form-item').find('#input_18_16').val() || '',
            "input_18_17": $(this).parents('.form-item').find('#input_18_17').val() || '',
            "input_18_3": $(this).parents('.form-item').find('#input_18_3').val() || '',
            "input_18_2": $(this).parents('.form-item').find('#input_18_2').val() || ''
          },
        },
        success: function(data, status, xhr) {
          console.log('Response:\n', data)
          console.log('successful trigger');
          console.log($(this).find('#input_18_16').val());
        },
        error: function(xhr, code, error) {
          console.log(error)
        }
      })
    }
  });

疯狂的是我可以正确地从中获取数据: console.log($(this).find('#input_18_16').val()); 在控制台中。但由于某种原因,console.log('Response:\n', data)会以Response:0的形式返回,所以我不确定为什么它会成功但却无法返回任何内容?

3 个答案:

答案 0 :(得分:0)

success功能中,您应使用$this代替$(this)。这就是你首先设置它的原因,不是吗?

您也可以在data:选项中使用它,因为重复使用变量而不是反复调用jQuery()会更有效。

答案 1 :(得分:0)

'ajax返回成功后,'console.log('Response:\ n',data)'中的数据实际上是从success函数返回的。是与发布到Config.ajaxurl的数据不同。

答案 2 :(得分:-1)

检查丢失的“;”在 console.log('响应:\ n',数据)一行。 我认为“\ n”不会影响console.log历法。

EGG:在此之后,结帐https://api.jquery.com/serialize/可能会让您的生活更轻松