Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Jquery回调错误:未捕获类型错误:无法读取属性';长度';未定义的_Php_Jquery_Ajax - Fatal编程技术网

Php Jquery回调错误:未捕获类型错误:无法读取属性';长度';未定义的

Php Jquery回调错误:未捕获类型错误:无法读取属性';长度';未定义的,php,jquery,ajax,Php,Jquery,Ajax,我有一个表单可以调用ajax进行后端处理,所有输入都将存储在表中,并返回“success”以通知用户提交成功。但我在回调过程中遇到了一个问题,输入数据可以保存到表中,但回调因下面的错误而停止,我不知道出了什么问题,相同的脚本应用到另一个表单(具有不同的表单字段)工作得很好,请帮助解决 控制台日志(Chrome): 火狐 脚本: $(document).ready(function() { $("#status").hide(); $('#btn_submit'

我有一个表单可以调用ajax进行后端处理,所有输入都将存储在表中,并返回“success”以通知用户提交成功。但我在回调过程中遇到了一个问题,输入数据可以保存到表中,但回调因下面的错误而停止,我不知道出了什么问题,相同的脚本应用到另一个表单(具有不同的表单字段)工作得很好,请帮助解决

控制台日志(Chrome):

火狐

脚本:

$(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')