Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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
Javascript 用AJAX解析关联数组_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 用AJAX解析关联数组

Javascript 用AJAX解析关联数组,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有以下关联数组,我尝试通过AJAX将其发送到服务器 检查我的控制台,在“网络”选项卡中,它已发布,但未解析任何内容 数组创建: var FiltersArray = []; FiltersArray['category'] = this.category.val(); FiltersArray['Type1'] = this.type1.val(); FiltersArray['Type2'] = this.type2.val(); $.ajax({

我有以下关联数组,我尝试通过AJAX将其发送到服务器

检查我的控制台,在“网络”选项卡中,它已发布,但未解析任何内容

数组创建:

   var FiltersArray = [];

    FiltersArray['category'] = this.category.val(); 
    FiltersArray['Type1'] = this.type1.val(); 
    FiltersArray['Type2'] = this.type2.val(); 
$.ajax({
    type: POST,
    url: 'something.php',
    data: {
        data: FiltersArray 
    }
}).done(function(data) {
    console.log('Server Response: ' + data);
})
关联数组(console.log):

   var FiltersArray = [];

    FiltersArray['category'] = this.category.val(); 
    FiltersArray['Type1'] = this.type1.val(); 
    FiltersArray['Type2'] = this.type2.val(); 
$.ajax({
    type: POST,
    url: 'something.php',
    data: {
        data: FiltersArray 
    }
}).done(function(data) {
    console.log('Server Response: ' + data);
})
[类别:“6”、类型1:“998”、类型2:“20100100”]

请求:

   var FiltersArray = [];

    FiltersArray['category'] = this.category.val(); 
    FiltersArray['Type1'] = this.type1.val(); 
    FiltersArray['Type2'] = this.type2.val(); 
$.ajax({
    type: POST,
    url: 'something.php',
    data: {
        data: FiltersArray 
    }
}).done(function(data) {
    console.log('Server Response: ' + data);
})
完整代码:

          $(document).ready(function() {
    var filters = {
        category: $("#categoryInp"),
        type1: $("#type1Inp"),
        type2: $("#type2Inp"),
        button: $("#FilterBtn"),

        returnArray: function() {
            var FiltersArray = [];

            FiltersArray['category'] = this.category.val();
            FiltersArray['Type1'] = this.type1.val();
            FiltersArray['Type2'] = this.type2.val();

            return FiltersArray;
        },
        sendRequest: function(type, URL) {
            $.ajax({
                type: type,
                url: URL,
                data: JSON.stringify(this.returnArray()),

                beforeSend: function() {}

            }).done(function(data) {
                console.log('Server Response: ' + data);
            }).fail(function() {
                alert("An error occurred!");
            });
        }
    };

    filters.button.on('click', e => {
        console.log(filters.returnArray());
        filters.sendRequest('POST', 'Modules/Products.order.module.php');
    });

});

JavaScript中没有关联数组这样的东西

  • 有一些对象保存着
    key:value
    对数据
  • 有一些数组,当
    名称为整数时,这是一种提供特殊行为的对象类型
当您在
数据中传递一个对象时,jQuery会区分数组和其他类型的对象

如果您传递一个数组,它将使用
键:值
对执行任何操作,其中
不是整数

为此使用普通对象而不是数组。


旁白:以大写字母开头的变量名传统上保留用于在JavaScript中存储构造函数。不要对其他类型的数据使用这种命名约定



创建对象时,只需收集所有数据会更容易:

var filters = {
    category: this.category.val(),
    Type1: this.type1.val(),
    Type2: this.type2.val()
};

旁白

这将创建一个(似乎毫无意义)复杂的数据结构,您需要在PHP中以
$\u POST['data']['category']
的形式访问它

你可能只想:

data: filters

旁白

这将发送JSON而不是表单编码的数据

如果您这样做,那么您还需要:

  • 设置请求的
    contentType
    ,以指示您正在发送JSON

所以你可能不想这样做。

你的意思肯定是
url:'something.php',data:FiltersArray
Hi@mplungjan,实际上不,数据需要一个值,我需要在那里发送一个数组。你真的想要一个对象:
var FiltersObj={}
而不是数组。在这种情况下,
这是什么?@SASSY_-ROG-这不是JSON-不要相信W3Schools,它们很糟糕。