要发布或显示的JavaScript数组

时间:2014-02-26 16:27:54

标签: jquery highcharts jquery-post

我正在使用http://www.highcharts.com/plugin-registry/single/17/Annotations,他们建议我保存任何东西,使用

var items = chart.annotations.allItems,
      annotationsArr = [],
  iLen = items.length - 1;

 for( ; iLen >= 0; iLen--) {
annotationsArr[iLen] = items[iLen].options;
 }
 $.post('my/path/to/save/annotations', annotationsArr); 

不幸的是,这是我被卡住的地方。做

$(".result").text(annotationsArr);

给我[object Object],[object Object],[object Object],[object Object]

如果我想将“正确的”数组发布到PHP页面,我该怎么做?我如何在PHP页面上获取数组?做一个console.log(annotationsArr)给我以下

enter image description here

[UPDATE]

我现在可以使用

提交处理得很好的数据
$("#submit").click(function () {

            var items = chart.annotations.allItems,
            annotationsArr = [],
            iLen = items.length - 1;
                //alert('DEBUG INFO: '+JSON.stringify(items));
                for (; iLen >= 0; iLen--) {
                    annotationsArr[iLen] = items[iLen].options;
                }
                $.ajax({
                    type: "POST",
                    url: "process.asp",
                    data: JSON.stringify(annotationsArr),
                    dataType: JSON
                });
            });

然而,作为示例的结果数组显示没有颜色,例如

[{
    "xAxis": 0,
    "yAxis": 0,
    "title": "Annotationtitle<br>withlinebreak",
    "shape": {
        "params": {
            "r": 106,
            "d": null,
            "width": null,
            "height": null
        }
    },
    "x": 160,
    "y": 122,
    "allowDragX": true,
    "allowDragY": true,
    "anchorX": "left",
    "anchorY": "top"
}]

我将return的{​​{1}}部分调整为

function getParams(e)

这在下面进行了解决,但不幸的是,这似乎也不起作用!有什么建议吗?

return {
                        r: shape.r ? getRadius(e) : null,
                        d: shape.d ? getPath(e) : null,
                        width: shape.width ? getWidth(e) : null,
                        height: shape.height ? getHeight(e) : null,
                        stroke: shape.stroke ? $("#stroke").val() : null,
                        strokeWidth: shape.strokeWidth ? $("#strokeWidth").val() : 2,
                        fill: shape.fill ? $("#fill").val() : null
                    };

更新

形状未被注册,因此我将[{ "xAxis": 0, "yAxis": 0, "title": "Annotationtitle<br>withlinebreak", "shape": { "params": { "r": 76, "d": null, "width": null, "height": null, "stroke": "red", "strokeWidth": null, "fill": "#AB3445" } }, "x": 144, "y": 136, "allowDragX": true, "allowDragY": true, "anchorX": "left", "anchorY": "top" }] 更改为以下

drop(e)

似乎有效,但还剩下一件事!如果我保存注释,那很好。当我回到屏幕时,它们会很好。

然而,如果我想移动它们然后保存它们,它们就不会被保存在新的位置

因此,对于一个矩形,它有合作

function drop(e) {
                    Highcharts.removeEvent(document, 'mousemove', step);

                    // store annotation details
                    if (annotation) {
                        annotation.update({
                            shape: {
                                params: getParams(e),
                                "type": $("input[type='radio']:checked").val()
                            }
                        });

                    }
                    annotation = null;
                }

我把它移到了对面的角落,它仍然带着

回来了
"x": 116,
"y": 117,

1 个答案:

答案 0 :(得分:2)

这个:$(".result").text(annotationsArr);应该表示为$(".result").text(JSON.stringify(annotationsArr)); - 应该放到.result元素字符串annotationsArr

  

我如何在PHP页面上获取数组?

这样的事情应该足够了:

<?PHP
    $req = $_REQUEST;
    echo '<pre>';
    print_r($req);
    echo '</pre>';
?>