【问题标题】:How do I obtain a JavaScript object that is created on another php file made by the first page?如何获取在第一页创建的另一个 php 文件上创建的 JavaScript 对象?
【发布时间】:2016-11-04 09:28:46
【问题描述】:

我的问题是我需要访问在另一个页面(php 文件)上创建的 JavaScript 对象并在当前页面中使用它。

所以,这是我的第一页 test_ong.php 包含 2 个按钮。一种方法是创建另一个生成该 JavaScript 对象的页面和另一个按钮来检索该 JavaScript 对象。

<button id="new">Open New Win</button>
<button id="dis">Display</button>
<div id="test"></div>
<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>

<script type="text/javascript"> 
var myChild;
$("#new").click(function() {
    myChild = window.open("test_reg.php","","width=500, height=500, resizable=yes");
});

$("#dis").click(function() {
    console.log('I clicked this');
    $.post("test_reg.php", function(data) {
        console.log(data);
    });
});
</script>

我的第二页 test_reg.php 将创建对象whatIWant

<script type="text/javascript">
    var whatIWant = {
        fruit: "apple",
        car: "Lotus",
        age: 31,
        hobby: "coding"
    };
</script>

所以,我想要的是每当我点击按钮显示。它会给我控制台日志中的对象whatIWant

我知道我可以通过使用 myChild.whatIWant 来获得它,但我需要刷新我的第一页并仍然获得对象 myChild.whatIWant

感谢那些阅读或回答我问题的人。

【问题讨论】:

  • I need to refresh my first page and still get the object。如果那是你的设计,也许你应该首先重新考虑这个设计。如果您仍然需要刷新,那么为什么不让 test_ong.php 向自身提供 Javascript 对象,而不是同时调用第二个文件呢?
  • @MarcCompte。我实际上正在研究电话。所以,我实际上需要包含这个用于电话的 Sip.js。问题是我有一个带有许多选项卡和小程序的网页。因此,当我进行操作时,我的页面将重新加载,从而再次断开和连接我的 sip.js。我需要这是一个稳定的连接。所以我想把这个 sip.js 放到另外一个页面来稳定连接,而第一个页面可以操纵和使用 JavaScript 对象连续调用和接收调用。
  • 这里似乎比您问题中的代码显示的要多。拥有标签并不一定意味着每次您在其中执行某些操作时都需要重新加载页面。也许父文档应该包含 sip.js 并且在选项卡中打开任何文件都不会断开您的连接。另一种方法可能是使用会话变量,将 JS 对象存储在那里并在需要时检索它。
  • @MarcCompte。包含 sip.js 的父文档将不起作用,因为该网站是由其他人设计的,我只是拉它。但我认为会话变量可能适用于我的这种情况。非常感谢您的回答,我该如何投票或勾选您的评论? =)
  • 您可能还没有投票给 cmets 的选项。我会把它作为答案,如果它适合你,那么你可以接受它。

标签: javascript php jquery json object


【解决方案1】:

您的第二页应该只返回如下对象:

 {
        fruit: "apple",
        car: "Lotus",
        age: 31,
        hobby: "coding"
 }

【讨论】:

    【解决方案2】:

    你可以通过ajax调用来做到这一点,你需要先初始化一个变量,然后通过ajax调用你可以覆盖它然后再次显示。

    <!DOCTYPE html>
        <html>
    
          <head>
            <link rel="stylesheet" href="style.css">
            <script>var whatIWant = {};</script>
          </head>
    
     <body>
        <button id="new">Open New Win</button>
        <button id="dis">Display</button>
        <div id="test"></div>
        <script
          src="https://code.jquery.com/jquery-3.1.1.min.js"
          integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
          crossorigin="anonymous"></script>
    
        <script type="text/javascript"> 
        var myChild;
        $("#new").click(function() {
            myChild = window.open("test_reg.php","","width=500, height=500, resizable=yes");
        });
    
        $("#dis").click(function() {
            console.log('I clicked this');
    
            $.ajax({
                    type: "POST",
                    url: "test_reg.php",
                    data: {},
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                       alert(data);
                    },
                    error: function (errormessage) {
    
                        //do something else
    
                    }
                });
        });
        </script>
          </body>
    
        </html>
    

    这是你的 test_Reg.php 文件:

    echo '<script type="text/javascript">
          whatIWant = {fruit: "apple",
          car: "Lotus",
          age: 31,
          hobby: "coding"};
          </script>';
    

    【讨论】:

      【解决方案3】:

      也许您可以尝试将 JSON 存储为会话变量或 cookie,然后使用 Javascript 检索它。重新加载页面后两者都应该可以访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        相关资源
        最近更新 更多