使用字符串索引通过Ajax发送数组

时间:2013-12-25 08:25:29

标签: javascript jquery ajax

当我尝试通过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() {

                }
            });

3 个答案:

答案 0 :(得分:2)

您正在使用字符串向数组添加值,这会向数组对象添加属性,而不是实际的数组值。

您有两种选择:

  1. 使用对象{}代替new Array
  2. 使用coord.push(12); coord.push(42);
  3. 希望有所帮助。

答案 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(",");