我一直在使用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
的形式返回,所以我不确定为什么它会成功但却无法返回任何内容?
答案 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/可能会让您的生活更轻松