【问题标题】:How to concatenate string in Jquery and PHP如何在 Jquery 和 PHP 中连接字符串
【发布时间】:2012-11-13 02:25:49
【问题描述】:

在下面的代码中,如何将变量c 连接到字符串name 以便PHP 函数foo() 将实际读取foo('name1'),因为在这种情况下c 的值是@987654326 @?

$(function(){

var c = 1;

$('#foo').click(function() {
    $('#bar').append('<div style="color:red">\n\
                        Name:<?=foo('name')?>\n\
                    </div>');   
    c++;
    });
});

编辑:

所有foo() 所做的只是根据c 的值返回字符串(例如name1name2)。 我真正需要的只是像 &lt;?=foo('name' + c)?&gt; 这样的东西,但这不起作用。

【问题讨论】:

    标签: php jquery string concatenation


    【解决方案1】:

    使用连接运算符+,而不是

    Name:<?=foo('name')?>\n\
    

    写:

    Name:<?=foo('name' + i)?>\n\
    

    但是,这仍然无法如您所愿。因为 PHP 在服务器端,您需要从 JavaScript 向服务器发出请求。而且由于是 PHP 破坏了 JS 代码,所以你需要重新设置你的应用程序逻辑。

    编辑

    代替

    $('#bar').append('<div style="color:red">\n\
                        Name:<?=foo('name')?>\n\
                    </div>');
    

    试试

    $('#bar').append('<div style="color:red">\n\
                        Name:<?=foo(\'name\'' + i + ')?>\n\
                    </div>');
    

    【讨论】:

    • 但它不会那样工作。 JavaScript 不能调用 PHP 函数。
    • JS 实际上不需要调用 PHP。所有foo() 所做的只是返回一个类似name1name2 的字符串,这取决于JS 的c 变量的值。还是不行?
    • @IMB:“所有 foo() 所做的只是返回一个字符串,如 name1 或 name2 取决于 JS 的 c 变量的值”——PHP 发生在服务器端并在任何 javascript 实际出现之前发出 javascript跑步。到 javascript 运行时,PHP 已经完成。没有办法直接基于 javascript 变量调用 php。 唯一的 方法是通过 javascript 再次与服务器通信(例如,使用 AJAX)。看我的回答。
    【解决方案2】:

    PHP 发生在服务器端,而 javascript 发生在客户端,因此您实际上无法做到这一点。如果要使用在 javascript 中更新的值调用 php 方法的结果,则必须使用 ajax。像这样的:

    var c = 1;
    
    $('#foo').click(function() {
        $.ajax({
            url: 'something.php?c=' + c,
            success: function(name) {
                $('#bar').append('<div style="color:red">\n\
                    Name:' + name + '\n\
                </div>');   
            }
        });
    
        c++;
    });
    

    这里,something.php 将接受单个请求参数“c”,并且应该只输出:

    <?= foo('name' . $_GET['c']) ?>
    

    【讨论】:

    • 虽然完成一项简单的任务似乎很麻烦,但它仍然有效。这真的是唯一的方法吗?
    • @IMB,是的,确实如此。对于这样一个简单的任务,它看起来确实很复杂,但这是网络的本质。没有办法解决它(除非你能以某种方式仅使用 javascript 实现 foo() 函数)。
    【解决方案3】:

    这是不可能的,因为 javascript 是在客户端执行的,因此不能与 php 混合。您可以做的是使用 ajax 来实现服务器 客户端通信。

    $.ajax({
      type: 'POST',
      url: "your_php_file.php", 
      data: {"counter": c},
      success: function (val) { 
          $('#bar').append('<div style="color:red">Name:' + val + '</div>');   
      }
    });
    

    这样,你就可以像foo($_POST['counter'])一样调用服务器端的函数。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2013-05-26
      • 2018-06-10
      相关资源
      最近更新 更多