Ajax 发送带有字符串名称的数据

Ajax send data with string name

如果这个问题已经得到回答,我深表歉意,但我在 70k+ 个结果中还没有找到答案..

我想发送这样的数据:

function _post(params) {

    var func = params['func']; // -> 'getUserDetails'

    $.ajax({
              url: "crossroad.php",
              type: "post",
              data: { func : params },
              cash: false,
              complete: function(respond){
                console.log(respond);
              }
          });
}

m = {};
m['func'] = 'getUserDetails';
m['id'] = '123456';
_post(m);

但是使用这段代码,php 得到

$_POST['func']

我希望将发送的字符串命名为参数['func'],在这种情况下,我希望在php

中接收
$_POST['getUserDetails']

我怎样才能做到这一点?

您需要创建对象

var requestParams = {};

然后像

一样设置 属性
requestParams[params['func']] = '';// your data to send
//or
requestParams[params['func']] = params['id'];// your data to send

然后放入ajax数据属性

 data: requestParams,

这里的问题是 func 是一个有效的密钥标识符,所以尽管您希望 func 代替您传入的参数,但您实际上是在声明一个 属性 的数据对象名为 func.

要解决这个问题,创建一个新对象,然后像这样传递它:

function _post(params) {

var func = params['func']; // -> 'getUserDetails'
var obj = {};
obj[func] = params;

$.ajax({
          url: "crossroad.php",
          type: "post",
          data: obj,
          cash: false,
          complete: function(respond){
            console.log(respond);
          }
      });
}

function _post(params) {

var func = params['func']; // -> 'getUserDetails'
var obj = {};
obj[func] = params['id'];

$.ajax({
          url: "crossroad.php",
          type: "post",
          data: obj,
          cash: false,
          complete: function(respond){
            console.log(respond);
          }
      });
}
m = {};
m['func'] = 'getUserDetails';
m['id'] = '123456';
_post(m);