3

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

$(function(){

var c = 1;

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

编辑:

所做的只是根据的值foo()返回字符串(例如,name1或) 。我真正需要的只是这样的东西,但它不起作用。name2c<?=foo('name' + c)?>

4

3 回答 3

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']) ?>
于 2012-11-25T12:06:21.157 回答
0

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

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>');
于 2012-11-25T12:05:24.270 回答
0

这是不可能的,因为 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']).

希望这可以帮助。

于 2012-11-25T12:08:15.600 回答