ajax表单不发送标头

ajax form is not sending headers

本文关键字:表单 ajax      更新时间:2023-09-26

所以当我提交表单时,我不会得到任何头数据。我已经做了十亿次这种类型的提交(当然是象征性的),但仍然有可能我遗漏了一些东西。想法?以下代码:

$('#app-submit').click(function(e){
        e.preventDefault();
        validate();
        var data = [];
        var required = [];
        var questions = [];
        var errors = 0;
        $('#application-form :input:not(:radio):not(:button)').each(function(){
            name = $(this).attr('id');
            val = $(this).val();
            data[name] = val;
            if($(this).closest('div').hasClass('has-error')){
                errors++;
            }
        });
        $('#application-form .not-empty').each(function(){
            name = $(this).attr('id');
            val= $(this).val();
            required[name] = val;
        });
        for(var i = 1; i < 12; i++){
            name = 'q'+i;
            val = $('input[name="q'+i+'"]:checked').val();
            if($('input[name="q'+i+'"]').closest('div').hasClass('has-error')){
                errors++;
            }
            questions[name] = val;
        }
        if(!errors){
            $.ajax({
                url : 'assets/server/submitApp.php',
                type : 'POST',
                data : data,
                dataType : 'JSON',
                success : function(data){
                    if(!data.errors){
                        $('#application-holder').html(data.message);
                    }else{
                        alert(data.message);
                    }
                }
            });
        }
    });

注意事项:HTTP头没有显示在控制台中,只是为了验证我没有得到数据,我做了一个var_dump($_REQUEST),它也显示为null

更新:我已经编辑了代码,只提交了我构建的一个数组,但它仍然没有发送任何数据。事件,但在我提交ajax调用之前,如果我放置console.log(data),它将显示数组确实充满了数据。

您正在将一个数组传递给data

如果执行此操作,则数组必须使用标准数字索引包含一系列具有namevalue属性的对象。

你没有那样做。

修改数组的唯一方法是将命名属性添加到数组中,就好像它是一个普通对象一样。

首先使用普通对象。

var data = [];

应该是:

var data = {};

对象应具有命名属性。数组不是,它们是用于顺序数据的。