代码之家  ›  专栏  ›  技术社区  ›  Sinan

如何将服务器端信息转换为javascript?

  •  0
  • Sinan  · 技术社区  · 15 年前

    我不知道如何问这个问题,这就是为什么我要模拟我需要的,一些开发人员通过用PHP呈现JavaScript来实现我需要的。一个简单的示例文件如下:

    my_javascript_file.php

    <?php include "my_class.php"; ?>
    
    $(document).ready(function(){    
    
      $.ajax({
        url: "<?php $my_obj->post_url(); ?>",
        success: function(){
          alert("Post successful")
        }
      });
    };    
    

    输出如下:

    $(document).ready(function(){    
    
      $.ajax({
        url: "/post_handler.php",
        success: function(){
          alert("Post successful")
        }
      });
    };    
    

    我的问题是,是否有任何方法可以通过纯JS技术实现这一点?

    谢谢, 思南。

    另外,这只是一个简单的例子,当然我可以在这里对URL进行硬编码,或者通过JavaScript获取URL,我希望你明白我的意思……

    编辑: 抱歉,我使用的术语让人困惑,它只是从我的应用程序中获取一些信息并动态地写入我的javascript。我不是说彗星或数据编码等。

    我想知道的是如何在JavaScript文件上使用服务器端数据(如果有任何方法的话)。就像PHP方法在我的示例中所做的那样,它只是回响来自我的应用程序的字符串。有没有一种通过JavaScript库或框架来实现这一点的方法,比如您分配vars并在模板系统中使用模板引擎。希望现在更清楚。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Dave Archer    15 年前

    是的,有办法,但很奇怪。你可以使用 jaxer server . 它允许您在服务器上运行javascript。

    编辑:

    正如我在我的评论中所说,我认为您不希望为了实现模板化引擎而向客户机下载额外的JS。这可能是你所说的分离或脱钩。在这种情况下,可以在单独的JS文件中包含以下内容:

    var myObject = {
    var1 : '',
    var2 : 0,
    init : function(options) {
        var1 = options.var1;
        var2 = options.var2;
    
        $('#someElem').click(function() {
            // do stuff
            return false;
        };
    }
    

    };

    然后像这样从HTML页面调用它

    <head>
    <script type="text/javascript">
        var options = {
            var1 : <?php echo "hello" ?>,
            var2 : <?php echo 1 ?>
        }
        myObject.init(options);
    ...
    
        2
  •  1
  •   back2dos    15 年前

    我不知道你说的“推”是什么意思…如果它是真的 server push 你应该看看 comet 服务器…

    另外,对我来说,还不清楚什么是“纯JS技术”…当然,您可以在没有jquery的情况下完成这项工作…但是纯JS,作为主要设计用来操作DOM的语言,当然还不够……你需要类似Ajax的方法…但是有人提议推进HTML5,但是是的, this is gonna take some time

    所以我希望这有助于…但也许你应该澄清一下你的问题,我相信你会得到更好的答案…:)

    尔兹

    后台操作系统

        3
  •  1
  •   montrealist    15 年前

    您可以使用 .get .ajax (假设你 urls.php 将正确处理此问题并返回正确的字符串或JSON,在这种情况下,您还可以使用 .getJSON -其中包含URL)。例如(当然是未经测试的):

    $.get("urls.php", { operation: "post_handler" },
        function(data){
            $.ajax({
                url: data,
                data: eventData,
                success: function(){
                    alert("Post successful");
                }
            });
        });
    
        4
  •  1
  •   Chris Holland    15 年前

    ==========编辑:新的潜在答案

    假设您设法从服务器中检索到javascript数据对象,您希望注入您在HTML标记客户端获得的javascript数据吗?

    如果是这样的话,你可以看看ibdom: http://ibdom.sf.net/

    我写的,我们已经在一些A网站上生产了几年。

    以下是旧答案==

    所以您希望“eventdata”是可以被javascript使用的“某物”。

    我建议首先看一下PHP中的JSON:

    [删除了php中的json链接,不需要]

    那么您的PHP代码可能类似于:

    <?php include "my_class.php"; ?>
    
    $(document).ready(function(){    
    
      $.ajax({
        url: "<?php $my_obj->post_url(); ?>",
        data: <?php json_encode ($my_obj->getData()); ?>,
        success: function(){
          alert("Post successful")
        }
      });
    };
    

    所以这里的想法是,“data:”字段的值将成为一个由PHP在服务器上生成的JSON对象图。