当我尝试通过Ajax发布带有字符串索引的数组时,不会传输任何数据。 请让我知道原因。
var coord=new Array;
coord["x"]=12;
coord["y"]=12;
coord["w"]=44;
coord["h"]=66;
console.log(coord);
var parameter={coord:coord};
$.ajax({
type: 'POST',
data: parameter,
dataType: 'json',
context: this,
url:'http://localhost/server/main/crop_image',
success: function(response) {
},
error: function() {
},
complete: function() {
}
});
答案 0 :(得分:2)
您正在使用字符串向数组添加值,这会向数组对象添加属性,而不是实际的数组值。
您有两种选择:
{}
代替new Array
或coord.push(12); coord.push(42);
等希望有所帮助。
答案 1 :(得分:1)
将行var coord = new Array;
更改为var coord = {}
(对象不是数组)
javascript中的数组是对象,因此您可以coord["x"] = "bla bla"
(与coord.x = "bla bla"
相同)但在JSON数组中是对象列表,因此jQuery在翻译时忽略数组对象的非列表属性数据到JSON。
通过将coord更改为对象而不是Array,jQuery会将其转换为可以按预期工作的JSON对象。
答案 2 :(得分:0)
尝试这样的事情
var parameter={coord:coord.join()};
在客户端上,您将获得csv值,您可以根据服务器端语言将其再次转换为数组
<强> PHP 强>
$pizza = "piece1,piece2,piece3";
$pieces = explode(",", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
<强> JAVA 强>
String[] ary = "piece1,piece2,piece3".split(",");