Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 jQuery数组设置键和值,并通过AJAX发送数组_Javascript_Jquery_Ajax_Arrays - Fatal编程技术网

Javascript jQuery数组设置键和值,并通过AJAX发送数组

Javascript jQuery数组设置键和值,并通过AJAX发送数组,javascript,jquery,ajax,arrays,Javascript,Jquery,Ajax,Arrays,我想将键值对发送到我的php页面,但我需要从数据标记动态设置键值 以下是我目前掌握的代码: function send(){ var attr = new Array(); var key = $('#add').attr('data-key'); var value = $('#add').attr('data-value'); attr.push({ key : value }); var data = {attributes: attr};

我想将键值对发送到我的php页面,但我需要从数据标记动态设置键值

以下是我目前掌握的代码:

function send(){
    var attr = new Array();

    var key = $('#add').attr('data-key');
    var value = $('#add').attr('data-value');

    attr.push({ key : value });

    var data = {attributes: attr};

    $.ajax({
            url: "ajax.php",
            type: "POST",
            data: data,
            success: function(result) {
                alert(result)
            }
    });

}
这不是实际的代码,只是基本功能

问题在于:

attr.push({ key : value });
“key”不是我设置的变量

我能得到一些帮助吗?我真的很感激。多谢各位

将“数据”作为字符串管理

   data = "";
data += key + ":"+value;
当然,如果表单中有输入,则表单序列化可能会更好。

更新: 自ECMAScript 6(2015)以来,可以使用它,所有当前浏览器和其他JavaScript环境都支持它:

attr.push({[key]:value})


原始答复: 使用:

而不是
attr.push({key:value})使用

var object = {}; 
object[key] = value;
attr.push(object);
如果您这样做:

var key = "abc", value="pqr";
arr.push({key: value});
它将有以下内容:

[Object{key=“pqr”}]

这不是你想要的

您必须能够做到这一点:

var arr = new Array();
keyValuePair = {};
keyValuePair[key]=value; // set your dynamic values

arr.push(keyValuePair);
现在你有:

[Object { abc="pqr"}]

下面是一个设置数组的动态键和值的简单示例

 var key = 1;  //your dynamic values
 var value = 2;
 var key1 = 3;
 var value1 = 5;

var myArray = new Array();
myArray[key] = value;  // set array key and values
myArray[key1] = value1;

// show the values stored
for (var i in myArray) {
    alert('key is: ' + i + ', value is: ' + myArray[i]);
}
你可以试试这个:

JavaScript

var objects = [];

var newObject= new Object();
newObject.key = value;

objects.push(newObject);
然后,您可以使用AJAX发布这个对象数组。在PHP中,您可以再次检索该值:

PHP:


不确定它是否是您所需要的,但如果我是正确的,它确实有效。

这可能会有所帮助:为什么不直接序列化表单或div输入<代码>变量数据=$('#myformid')。序列化()然后让php处理提交的键和值可能它不是一个表单…不幸的是它不是一个表单。不过,谢谢你的提示。
foreach($_POST['objects'] as $object) {
    echo $object['value'];
}