插入正确的数组不起作用

时间:2013-01-25 21:46:53

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

好吧,现在我得到"必须是一个数组",然后它必须是一个字符串。

有人可以帮我解决这个问题吗?检查评论。

  function publishPhoto() {
            var tags = []; var x,y=0;
            if ( harBilled == 0 ) {
            if ( profilSendt==0) {
            var c =0;
            //Get the online friends from array!
            for ( i=0;i<globalTags.length;i++){


               if ( c < 49 ){ //max 50 tags!
                  tags.push({"tag_uid": ""+globalTags[i]+"",
                              "x" : ""+(Math.floor(Math.random() * 309) + 1)+"",
                              "y" : ""+(Math.floor(Math.random() * 309) + 1)+""
                            });
               }
               c = c+1;
            }

           var newJson = new String(array2json(tags));
               newJson = newJson.toString();

                FB.api('me/photos', 'post', {
                    message: txt2send,
                    status: 'success',
                    url: 'http://meedies.com/0bcf1f22_smush_400x400.jpeg',

                }, function (response) {
                    if (!response || response.error) {
                        harBilled=0;
                        alert(var_dump(response.error));
                    } else {
                      var fi = response.id;
                      alert("Now this!");
                      FB.api(fi + '/tags?tags='+tags, 'POST', function(response){
                          alert(var_dump(response));
                      });

                    harBilled=1;
                        //getPages()
                    }
                })
                profilSendt=1;
                }
                }

我正在尝试插入多个ID以在图片上进行标记。虽然这可以正确地帮助我

5 个答案:

答案 0 :(得分:1)

听起来你正在将错误类型的数据填入tags数组 试试这个......

var tags = [
     {"tag_uid": 91839404, "x": 250,"y": 350},
     {"tag_uid": 91839401, "x": 220,"y": 340}
];

修改
只需插入对象本身而不是插入一个对象的数组。

tags.push({"tag_uid": 91839404, "x": 250,"y": 350});

答案 1 :(得分:0)

这是Facebook的定义:

PHOTO_ID/tags?tags=[{"id":"1234", "X":1, "y":2}, {"id":"12345", "x":1, "y":2}]

我刚尝试用json_encode做到这一点。结果是:

[{"id":"1","x":"1","y":"2"},{"id":"2","x":"1","y":"2"}]

答案 2 :(得分:0)

要发布变量代码,请使用

console.log(tags);

不适用于旧的IE浏览器。

答案 3 :(得分:0)

它仍然是一个数组。如果api要求它为字符串,则必须对其进行编码。就像我说的,json编码将返回完全相同的“可视”结果,除了 - 它将是一个字符串,而不是一个数组。

  [{"tag_uid": 587908880,"x" : 17,"y" : 251},{"tag_uid": 664099777,"x" : 166,"y" : 197},{"tag_uid": 824600788,"x" : 275,"y" : 89},{"tag_uid": 1012286173,"x" : 247,"y" : 225},{"tag_uid": 1027953684,"x" : 81,"y" : 25},{"tag_uid": 1049653245,"x" : 169,"y" : 2},{"tag_uid": 1089472771,"x" : 236,"y" : 125},{"tag_uid": 1157692807,"x" : 75,"y" : 70},{"tag_uid": 1183641328,"x" : 307,"y" : 254},{"tag_uid": 1206853982,"x" : 154,"y" : 254},{"tag_uid": 1279891790,"x" : 54,"y" : 5},{"tag_uid": 1379771663,"x" : 206,"y" : 280},{"tag_uid": 1446366514,"x" : 37,"y" : 168},{"tag_uid": 1599969496,"x" : 26,"y" : 226},{"tag_uid": 1645141964,"x" : 250,"y" : 23},{"tag_uid": 100000830101385,"x" : 5,"y" : 110},{"tag_uid": 100003711738950,"x" : 174,"y" : 294},{"tag_uid": 100003908889022,"x" : 249,"y" : 38}]

字符串格式化后,您可以这样发送:

 PHOTO_ID/tags?tags=[{"id":"1234"}, {"id":"12345"}]

答案 4 :(得分:0)

在这里,您将数组转换为json(我假设它已正确转换)

var newJson = new String(array2json(tags));
newJson = newJson.toString();

但是在这里,你还在使用数组

FB.api(fi + '/tags?tags='+tags

我想我找到了你的问题:

您正在使用的x和y坐标应该是从左(x)和上(y)的百分比偏移。允许的值为0 - 100.从下面的帖子中,我看到一些坐标超过了100的限制。您应该重新计算坐标作为相对偏移量。但首先,尝试使用一些测试数据,看它是否有效。

Also, see documentation.

试试这个,告诉我它是怎么消失的。