【问题标题】:jQuery array set both key and value and send array via AJAXjQuery 数组设置键和值并通过 AJAX 发送数组
【发布时间】:2014-04-16 16:33:28
【问题描述】:

我想将键值对发送到我的 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' 没有作为我设置的变量。

我能得到一些帮助吗?我真的很感激。非常感谢!

【问题讨论】:

  • 这可能会有所帮助:Answer
  • 为什么不直接序列化表单或 div 输入? var data = $('#myformid').serialize(); 然后让 php 处理提交的键和值
  • 可能不是表格...
  • 不幸的是它不是一个表格。不过,谢谢你的提示。

标签: javascript jquery ajax arrays


【解决方案1】:

更新:

从 ECMAScript 6 (2015) 开始,可以使用 computed object property names,所有当前的浏览器和其他 JavaScript 环境都支持:

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


原答案:

使用bracket notation

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

var object = {}; 
object[key] = value;
attr.push(object);

【讨论】:

    【解决方案2】:

    如果你这样做了:

    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"}]
    

    【讨论】:

      【解决方案3】:

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

       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]);
      }
      

      【讨论】:

        【解决方案4】:

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

           data = "";
        data += key + ":"+value;
        

        当然,如果您在表单中有输入,则表单序列化可能会更好。

        【讨论】:

          【解决方案5】:

          你可以试试这个:

          JavaScript

          var objects = [];
          
          var newObject= new Object();
          newObject.key = value;
          
          objects.push(newObject);
          

          然后,您可以使用 AJAX 发布此对象数组。在您的 PHP 中,您可以再次检索该值:

          PHP:

          foreach($_POST['objects'] as $object) {
              echo $object['value'];
          }
          

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

          【讨论】:

            猜你喜欢
            • 2013-01-09
            • 2012-01-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-28
            • 2021-01-03
            • 2015-07-20
            • 1970-01-01
            相关资源
            最近更新 更多