服务器端和客户端 - 什么时候可以将php放在javascript中?

时间:2012-06-15 17:13:29

标签: php ajax client-side server-side

让我们说我们在这些方面有一些东西:

  $.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调用,是否会执行回声? 要么 那个回声总是会被执行,因为在那个时候服务器端已经被触发了?

如果我在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通话,它会得到不同的评估吗?

(在这里挣扎......)

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

如果它位于单独的JS文件中,或者位于HTML文件(静态文件)中,那么它将不会。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

这里的一个好主意是检查浏览器是否存在JavaScript错误。不同的浏览器有不同的显示方式,但寻找一个javascript控制台或类似的东西。另外,请检查浏览器查看的页面来源。这是为了确保当你将这些东西混合在一起时,事情就像你期望的那样。

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

应该是

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