Jquery在请求中发送的数组后添加[]个字符

2024-06-23 03:36:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基于jquery的客户机向我的服务器发出请求。服务器基于Cherrypy(python)

在客户端发送数组的查询中,我的请求url似乎被jquery假定的字符“[]”污染了。例如:

this.setParameters = function(params) {
    let reqUrl = this.apiPath() + "setParameters";
    let reqParams = {};
    let requiredParams = ['sessionKey'];
    let optionalParams = ['resolutions', 'dimensions'];

    this.fillRequiredParams(reqParams, requiredParams, params);
    this.fillOptionalParams(reqParams, optionalParams, params);
     console.log('API.setParameters sending these :', reqParams);
    $.ajax({
        type: "POST",
        dataType: 'json',
        url: reqUrl,
        data:reqParams,
        success: function(data, textStatus, request) {
            if(typeof params.success === 'function') {
                params.success(data);
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log('setParameters - error', textStatus);
            if(typeof params.error === 'function') {
                params.error(textStatus, errorThrown);
            }
        }
    });
};


this.fillOptionalParams = function(reqParams, optionalParams, params) {
    $.each(optionalParams, function() {
        let optParamName = this;
        if(params[optParamName] !== undefined) {
            reqParams[optParamName] = params[optParamName];
        }
    });
};

控制台客户端中的结果:

enter image description here

然后,如果我在服务器端记录接收到的内容(这些内容在Cherrypy端点中作为**kwargs接收,因此是dict\u项,但所有内容都由CP本身管理):

SERVER.setParameters : dict_items([('resolutions[]', ['0.00009999999999999999', '0.00009999999999999999']), ('dimensions[]', ['0.0027', '0.0027']))

但是,问题的根本原因必须在客户机上,因为客户机发送的参数名称在每个参数的末尾都包含讨厌的“[]”

我想要的是:

  • 将这些参数作为数组发送,但不附加[]字符(例如,在发送之前,我不想在客户端将其拆分)
  • 理想情况下,我可以直接用python和json库解析它们,而不必对每个参数都进行凌乱的字符串解析

谢谢


Tags: 客户端data参数客户机functionerrorparamsthis

热门问题