Php Jquery回调错误:未捕获类型错误:无法读取属性';长度';未定义的
我有一个表单可以调用ajax进行后端处理,所有输入都将存储在表中,并返回“success”以通知用户提交成功。但我在回调过程中遇到了一个问题,输入数据可以保存到表中,但回调因下面的错误而停止,我不知道出了什么问题,相同的脚本应用到另一个表单(具有不同的表单字段)工作得很好,请帮助解决 控制台日志(Chrome): 火狐 脚本:Php Jquery回调错误:未捕获类型错误:无法读取属性';长度';未定义的,php,jquery,ajax,Php,Jquery,Ajax,我有一个表单可以调用ajax进行后端处理,所有输入都将存储在表中,并返回“success”以通知用户提交成功。但我在回调过程中遇到了一个问题,输入数据可以保存到表中,但回调因下面的错误而停止,我不知道出了什么问题,相同的脚本应用到另一个表单(具有不同的表单字段)工作得很好,请帮助解决 控制台日志(Chrome): 火狐 脚本: $(document).ready(function() { $("#status").hide(); $('#btn_submit'
$(document).ready(function() {
$("#status").hide();
$('#btn_submit').click(function(){
var params = $('#project_form').serialize();
var btn = $(this);
btn.button('loading')
$.ajax({
url: baseurl + '/process_form.php',
type: 'POST',
data: params,
dataType: 'json',
success: function(response){
if(response.success == 'success'){
$('#status').html('<b>Thank you</b>').show();
$('html,body').animate({
scrollTop: $('#top').offset().top
},500);
}else{
$('[id$="_error"]').html('');
$.each(response.error, function(key, value){
if(value){
$('#' + key + '_error').html(value);
}
});
}
},
error: function(){
console.log(arguments);
}
}).always(function(){
btn.button('reset')
});
});
});
$(文档).ready(函数(){
$(“#状态”).hide();
$('btn_submit')。单击(函数(){
var params=$(“#项目_形式”).serialize();
var btn=$(本);
按钮(“加载”)
$.ajax({
url:baseurl+'/process_form.php',
键入:“POST”,
数据:params,
数据类型:“json”,
成功:功能(响应){
如果(response.success==“success”){
$('#status').html('谢谢').show();
$('html,body')。设置动画({
scrollTop:$('#top').offset().top
},500);
}否则{
$('[id$=“_error”]')。html('';
$.each(response.error,函数(键,值){
如果(值){
$('#'+key+'_error').html(值);
}
});
}
},
错误:函数(){
log(参数);
}
}).always(函数(){
btn.按钮(“重置”)
});
});
});
首先:当您想将ajax与submit一起使用时,不要使用submit click。。在提交时更好地使用表单
$('#project_form').on('submit',function(){
var params = $(this).serialize();
第二:如果在success中您在process_form.php中回显(“success”),则应使用
if(response == 'success')
并使用response
而不是response.error
- 希望能有所帮助
success
回调方法。手册上说:
请求成功时要调用的函数。该函数传递三个参数:从服务器返回的数据,根据dataType参数或dataFilter回调函数(如果指定)进行格式化;描述状态的字符串;和jqXHR(在jquery1.4.x中,XMLHttpRequest)对象
因此它不会传递.success
或.error
,除非您自己确保它是从您执行ajax的url返回的。(如果正在执行此操作,则不要阅读我的其余答案,使用元素检查器查看.success
和.error
是否实际在返回的数据中。)
所以现在您的if(response.success==“success”)
为false,因为它实际上是未定义的。而且response.error
也是未定义的,因此$。每个(response.error,…)
都会给您带来问题,因为您不能。每个都是未定义的
假设您成功是正常的,因为您在成功处理程序中。请添加“process\u form.php”文件的代码我们可能也需要html(表单的)是response。错误已定义,正确的数组/对象可能重复
$('#project_form').on('submit',function(){
var params = $(this).serialize();
if(response == 'success')