Jquery没有通过ajax传递数组

问题描述 投票:0回答:4

我试图通过ajax将javascript数组发送到php,但它不发送,这是我的代码

var ArrayAmounts = new Array();
ArrayAmounts["P1"] = "16150";

$.ajax({
    url:"myajax",
    cache:'false',
    type:'POST',
    data:{Arr:ArrayAmounts},
    success: function(data){
        console.log(data);
    },error: function(xhr, AjaxOptions, ThrownError){
        ShowMessage(xhr.responseText);
    }
});

但是当我像这样制作数组时:

 var ArrayAmounts = new Array();
 ArrayAmounts[0] = "16150";

它正在传递数组,但我希望密钥为字母数字。请帮忙。

javascript jquery ajax
4个回答
4
投票

所以你不需要这里的数组,你需要使用这样的对象:

var Amounts = {};
Amounts["P1"] = "16150";

$.ajax({
    url:"myajax",
    cache:'false',
    type:'POST',
    data:{Arr: Amounts},
    success: function(data){
        console.log(data);
    },error: function(xhr, AjaxOptions, ThrownError){
        ShowMessage(xhr.responseText);
    }
});

0
投票

您的问题与您发送的数据类型有关,因为文档说:

“它被转换为查询字符串,如果还不是字符串。它被附加到GET请求的url。对象必须是键/值对。如果value是一个数组,jQuery根据值使用相同的键序列化多个值传统的环境“

Official documentation for more details


0
投票

你可以像这样声明数组:var ArrayAmounts = new Array(); ArrayAmounts = [“16150”];然后你的ajax调用正常工作


0
投票

像这样使用

var ArrayAmounts = {};
ArrayAmounts.P1 = "16150";

var dataArray = {Arr: ArrayAmounts};

$.ajax({
  url:"myajax",
  cache:'false',
  type:'POST',
  data: dataArray ,
  success: function(data){
    console.log(data);
  },error: function(xhr, AjaxOptions, ThrownError){
    ShowMessage(xhr.responseText);
 });
© www.soinside.com 2019 - 2024. All rights reserved.