将页面信息加载到数组中,并将页面信息循环作为URL

时间:2018-08-01 16:24:59

标签: javascript php jquery

我已经建立了一个CMS,它允许用户构建图像和文本内容的静态页面,仅用于在整个建筑物的电视屏幕上显示。我已经完成了这一步,可以查看带有页面的显示,但前提是要在url中显式调用它。问题是,我想通过存储在URL中的显示来加载。

例如,如果您点击“展示广告3”,则现在的网址为http://local.CMSTest.com/showDisplay.php?display=3

并调用使用3作为显示ID的函数,该函数将抓取具有该显示ID的所有页面。这可以工作,但是在我的html中将foreach放在其中的位置,它将与该显示相关的两个页面都加载到了一个被塞满的页面中。所以我知道它正在工作,但是我也相信我也需要将这些页面存储到javascript数组中。

我在想可能有一种方法可以将默认情况下的第一页加载到该页上,并将其附加到http://local.CMSTest.com/showDisplay.php?display=3&page_id = 2之类的url上,然后在时间到后可以转到下一个并更改网址http://local.CMSTest.com/showDisplay.php?display=3&page_id = 3

因此,PHP和HTML目前正在工作:

    
    <div class="row top">
        <?php include 'banner.php'?>
    </div>

    <div class="row middle" style="background-image: url(<?php echo $showDisplays['background_img']?>);">
        <div class="col-lg-12">
            <?if($showDisplays['panel_type_id'] == 1){?>
            <div class="fullContent" style=" height: 100%; ">
            <?php echo $showDisplays['content']?>
            </div>
            <?}?>
        </div>
    </div>

    <div class="row bottom">
        <?php include 'ticker.php';?>
    </div>

<?php }?> 

我想尝试一些类似的javascript,它将从数组中获取每个页面,将以下URL替换为我先前数组中的页面ID。如何正确执行此操作?

<script type="text/javascript">
var Dash = {
nextIndex: 0,

dashboards: [
    {url: "http://www.google.com", time: 5},
    {url: "http://www.yahoo.com", time: 10},
    {url: "http://www.stackoverflow.com", time: 15}
],

display: function()
{
    var dashboard = Dash.dashboards[Dash.nextIndex];
    frames["displayArea"].location.href = dashboard.url;
    Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length;
    setTimeout(Dash.display, dashboard.time * 1000);
}
};

window.onload = Dash.display;
</script>

更新:

当前数组

Array ( [pageID] => 104 [page_type_id] => 1 [display_id] => 3 [slide_order] => [active] => 1 [background_img] => [panel_id] => 96 [panel_type_id] => 1 [page_id] => 104 [cont_id] => 148 [contID] => 148 [content] =>This is full content)

2 个答案:

答案 0 :(得分:1)

您需要

  1. 解析frames.displayArea.location.href的查询参数。
  2. 要么分配Dash.nextIndex,要么(params.page_id + 1) % Dash.dashboards.length,因为page_id是当前正在显示的页面,我们要下一页...或者0,如果params.page_id是{{1} }。
  3. 通过undefined附加dashboard.urldisplay_id参数来构建URL。

为了整洁,我建议创建一个名为page_id的变量,因为我们需要构建自定义字符串。

newURL

答案 1 :(得分:1)

首先,您需要从javascript访问php数组,然后可以使用php的json_encode来将其转换为JSON对象。

然后,您可以使用URL search params更改下一个可以调用的URL的查询参数。参见下面的示例

function setDisplay() {
  let params = new URL(document.location).searchParams;
  let pageID = params.get("pageID");
  let disply = params.get("display");
  // set the html based on pageID and display
}

function getNextURL() {
  // encode your php array to json
  // let obj = <?php echo json_encode($myArray); ?>;

  // probably what obj will look like after above line
  // this is just for this example, you should use the line commented out above
  var obj = {
    "pageID": 104,
    "page_type_id": 1,
    "display_id": 3,
  }

  let params = new URL(document.location).searchParams;
  params.set("pageID", obj.pageID);
  params.set("display", obj.display_id);

  let url = window.location.href.split('?')[0];
  let nextURL = url + "?" + params.toString();
  console.log(nextURL);
  return nextURL
}

getNextURL();