【问题标题】:Server Side and Client Side - when can we place php inside javascript?服务器端和客户端 - 我们什么时候可以将 php 放入 javascript 中?
【发布时间】:2012-06-16 01:31:09
【问题描述】:

假设我们在这些行中有一些东西:

  $.ajax({
     success: function(html){
     $("#related_events").append(html);
     $("#related_events").fadeOut(150).fadeIn(150); //optional
     type: 'get',
     url: '<?php echo $this->createUrl('related'); ?>',

这一行的具体问题是:

 url: '<?php echo $this->createUrl('related'); ?>',

考虑到这个 ajax 调用,是否会执行 echo ? 或者 该回显将始终执行,因为那时服务器端已被触发?

如果我在 ajax 调用之前有这个条件,会在考虑 if 的情况下执行那个 echo 吗?

我相信查看浏览器的输出是没有用的,因为我们得到了那个回显,但我们不知道我们是否得到那个回显,因为它总是会运行,或者它会有条件地运行。

if('<?= $something ?>' == 'create'){
                $("#Event_name").focusout(function(){
                    $.ajax({
                          success: function(html){
                          $("#related_events").append(html);
                          $("#related_events").fadeOut(150).fadeIn(150); //optional
                    }, 
                    type: 'get',
                    url: '<?php echo $this->createUrl('related'); ?>',
                    data:
                    {
                       ind: $('#Event_name').val()
                    },

                    beforeSend: function(){
                                            $("#related_events").empty();
                                        },
                    cache: false,
                    dataType: 'html'
                });
              })
            }

我确定这与我对这里的服务器/客户端进程的错误理解有关。

更新:

我知道 php 代码将被执行。我没有得到的是:

1)他会知道javascript条件吗?

2)如果我们在进行 ajax 调用,它会得到不同的评估吗?

(在这里挣扎……)

【问题讨论】:

  • 确保在浏览器中查看 HTML 源代码。
  • 所以这意味着你有条件地尝试执行 JS 代码?是通过你上面的情况吗? if('= $something ?>' == 'create'){}
  • @verisimilitude:是的。但更重要的是,我试图了解这是否有意义,或者是否没有。如果在简单的 javascript 中回显 php 或在 ajax 调用中调用 php 之间存在差异。 (显然,简单的 javascript 意味着我迷失了正确的术语)。

标签: php ajax client-side server-side


【解决方案1】:

PHP 在显示给客户端之前在服务器上编译。这样该 URL 将被生成,并且无论您的 createURL 函数输出什么,都可以在源代码中查看。

【讨论】:

  • 问题是:1)它会考虑条件吗? 2) 在 ajax 调用和非 ajax javascript 代码上回显 php 有什么不同吗?
【解决方案2】:

如果该标签位于 PHP 文件中(即在响应发送到浏览器之前将处理的文件),它将被执行。

如果它在单独的 JS 文件中,或者在 HTML 文件(静态文件)中,则不会。

【讨论】:

    【解决方案3】:

    当页面加载时,PHP 将呈现,浏览器不知道那里有什么 PHP 代码,它是作为 HTML 从服务器交付的。然后 javascript 在客户端执行。因此,如果您查看页面的源代码,您应该会看到 PHP 创建的 URL。换句话说,它会起作用

    【讨论】:

      【解决方案4】:

      同意上面@Marcus Recck 的回答。 PHP 被编译并返回响应,因此上面的 URL 将是可见的。

      这里的一个好主意是检查您的浏览器是否有 JavaScript 错误。不同的浏览器有不同的显示方式,但请寻找 javascript 控制台或类似的东西。此外,请检查浏览器查看的页面来源。这是为了确保当您将它们混合在一起时,事情会按照您的预期工作。

      url: 'createUrl('related'); ?>', 

      应该是

      url: "createUrl('related'); ?>", 
      我觉得...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 2021-07-28
        相关资源
        最近更新 更多