0

我不知道如何问这个问题,这就是为什么我要模拟我需要的东西,一些开发人员通过用 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技术来实现?

谢谢,思南。

PS这只是一个简单的例子,当然我可以在这里硬编码post url,或者使用javascript通过位置对象等获取url我希望你明白我的意思......

编辑:很抱歉我使用的术语造成混淆,它只是从我的应用程序中获取一些信息并动态写入我的 javascript。我不是指彗星或数据编码等。

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

4

4 回答 4

1

我不确定我知道你所说的“推送”是什么意思......如果它是真正的服务器推送,你应该看看彗星服务器......

另外,对我来说,不清楚什么是“纯 js 技术”......当然,你可以在没有 jQuery 的情况下做到这一点......但是纯 JS,因为主要设计用于操作 DOM 的语言当然是不够的......你需要类似 AJAX 的方法......但是有一个关于推动 HTML5 的提议,但是是的,这需要一些时间......

所以我希望这会有所帮助......但也许你应该稍微澄清你的问题,我相信你会得到更好的答案...... :)

问候

back2dos

于 2009-08-04T19:42:56.653 回答
1

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

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

如果是这种情况,您可以查看 IBDOM:http: //ibdom.sf.net/

我写了它,我们已经在许多网站上生产了几年。

=================下面的旧答案=====================

因此,您希望“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")
    }
  });
};

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

于 2009-08-04T19:44:59.723 回答
1

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

$.get("urls.php", { operation: "post_handler" },
    function(data){
        $.ajax({
            url: data,
            data: eventData,
            success: function(){
                alert("Post successful");
            }
        });
    });
于 2009-08-04T20:04:45.207 回答
1

是的,有一种方法,但它很奇怪。您可以使用jaxer 服务器。它允许您在服务器上运行 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);
...
于 2009-08-04T20:10:51.247 回答