我试图通过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";
它正在传递数组,但我希望密钥为字母数字。请帮忙。
所以你不需要这里的数组,你需要使用这样的对象:
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);
}
});
您的问题与您发送的数据类型有关,因为文档说:
“它被转换为查询字符串,如果还不是字符串。它被附加到GET请求的url。对象必须是键/值对。如果value是一个数组,jQuery根据值使用相同的键序列化多个值传统的环境“
你可以像这样声明数组:var ArrayAmounts = new Array(); ArrayAmounts = [“16150”];然后你的ajax调用正常工作
像这样使用
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);
});