为了账号安全,请及时绑定邮箱和手机立即绑定

通过 AJAX 解析关联数组

通过 AJAX 解析关联数组

梦里花落0921 2021-09-17 17:09:43
我有以下关联数组,我尝试通过 AJAX 将其发送到服务器。检查我的控制台,在网络选项卡中,它已发布但未解析任何内容。数组创建:   var FiltersArray = [];    FiltersArray['category'] = this.category.val();     FiltersArray['Type1'] = this.type1.val();     FiltersArray['Type2'] = this.type2.val(); 关联数组(console.log):[category: "6", Type1: "998", Type2: "20100100"]要求:$.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');    });});
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

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

  • 有一些对象,它们保存key:value成对的数据。

  • 有数组,它们是一种对象,当key名称为整数时提供特殊行为。

当您在data.

如果你传递一个数组将不会做任何key:value对其中key不是整数。

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


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

var filters = {};


filters['category'] = this.category.val(); 

filters['Type1'] = this.type1.val(); 

filters['Type2'] = this.type2.val(); 

但是,在创建对象时收集所有数据会更容易:


var filters = {

    category: this.category.val(),

    Type1: this.type1.val(),

    Type2: this.type2.val()

};

在旁边


data: {

    data: FiltersArray 

}

这将创建一个(看似毫无意义的)复杂数据结构,您需要在 PHP 中以$_POST['data']['category'].


你可能只想:


data: filters

在旁边


data: JSON.stringify(this.returnArray()),

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


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


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

在 PHP 中显式解析 JSON

所以你可能不想这样做。


查看完整回答
反对 回复 2021-09-17
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信