在Highslide中使用Ajax for maincontentText(在Highcharts中)

时间:2013-05-28 16:55:32

标签: highcharts highslide

首先,感谢您的帮助!

基本上,当有人点击折线图中的数据点时,我在Highcharts中使用Highslide来显示一些图片。以下是代码:

hs.htmlExpand(null, 
                {                       
                    pageOrigin: 
                    {
                        x: this.pageX,
                        y: this.pageY
                    },

                    headingText: "<p style='margin: 0 auto;'> Weight: " + this.y,

                    maincontentText: "<p class='pictures'></p>" +
                        $.ajax
                ({
                    type: "post",
                    url: "pictures.php",
                    data: 
                    {
                        "date" : this.Pictures
                    },
                    success: function(result)
                    {
                        $('.pictures').html(result); 
                    }
                }),

                    width: 700, 

                    height: 600
                });                     

现在,Highslide正确显示图片,但它也会在Highslide弹出窗口的末尾输出“[Object object]”。如果我将我的php页面改为“echo'test';”,它会显示单词“test”,然后显示[Object object]。

关于如何摆脱这个[Object object]片段的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

你的ajax似乎正在返回一个json对象。您需要解析该对象以格式化要显示的结果,或者返回HTML而不是......

编辑::

第二个想法,似乎更像是你如何指定主要内容的问题。

使用HTML末尾的+作为主要内容,您将ajax调用作为内容包含在内。

我会在maincontent中指定html元素,但是将ajax删除为onAfterExpand调用。

http://highslide.com/ref/hs.Expander.prototype.onAfterExpand

答案 1 :(得分:0)

有趣的是,在看到您的other question之前,我无法使用此解决方案,因为 onAfterExpand 的用法对于我来说并不明确且不常见。 所以我找到了Ajax,Highcharts和Highslide的另一个有效组合:) 在plotOptions.spline.point.events内部是这样的:

var casper = require('casper').create();
var utils = require('utils');

casper.start('https://example.com/');

casper.on('page.resource.requested', function (requestData, networkRequest) {
  utils.dump(requestData.headers);
});

casper.run();