ajax表单不发送标头

时间:2015-02-10 14:53:36

标签: javascript jquery ajax

因此,当我提交表单时,我没有收到任何标题数据。我已经完成了这种类型的提交十亿次(当然比喻),但仍然有可能我错过了一些东西。思考?代码如下:

$('#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)并且它也显示为空

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

1 个答案:

答案 0 :(得分:1)

您正在将数组传递给data

如果这样做,那么数组必须使用标准数字索引包含一系列具有namevalue属性的对象。

你不是那样做的。

修改数组的唯一时间是向它添加命名属性,就好像它是普通对象一样。

首先使用普通对象。

var data = [];

应该是:

var data = {};

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