2

我有这样的代码:

<?php
$username = 'johndoe';
?>

<head>
<script>
...
$('a.manage-content-link').click(function (e) {
    var self = $(this),
        file = self.siblings('input[type="hidden.block-hidden-input"]').val();
    self.next(".manage-content-wrap").find(".manage-content").load("file-" + file + ".php");
    e.preventDefault();
});
...
</script>
</head>

<body>
...
<li><input type="hidden" value="001" class="block-hidden-input" />
    <a href="#" id="manage-1" class="manage-content-link">
        <img src="images/web-block/web-block1.jpg"/>
        <span class="orange-notice">Click to Edit Content</span>    
    </a>
</li>

<li><input type="hidden" value="002" class="block-hidden-input" />
    <a href="#" id="manage-2" class="manage-content-link">
        <img src="images/web-block/web-block2.jpg"/>
        <span class="orange-notice">Click to Edit Content</span> 
    </a>
</li>
...
</body>

如您所见,每次用户单击“manage-content-link”类时,manage-1、manage-2、...甚至 manage-X(多个 li 标签)jQuery 都会加载“file-XXX.php ”。其中 XXX 实际上是 li 标签中隐藏输入的值。

但是“file-XXX.php”需要来自 PHP 标记的 $username 和 ID 本身,即“manage-X”。如何传递“file-XXX.php”所需的这2个变量,一个来自PHP,另一个来自ID?

4

3 回答 3

2

使用 jQuery.ajax()代替.load()http ://api.jquery.com/jQuery.ajax/

$('a.manage-content-link').click(function (e) {
    var self = $(this),
        file = self.siblings('input[type="hidden.block-hidden-input"]').val(),
        this_id = self.attr('id');

    $.ajax({
      url: "file-" + file + ".php",
      data: { username: "<?php echo $username;?>", id: this_id },
      context: this,
      success: function(data) {
        $(this).next(".manage-content-wrap").find(".manage-content").html(data);
      }
    });
    e.preventDefault();
});

如果您想将脚本保留在外部,则不能依赖 php 在脚本中回显 $username。因此,您可以通过几种方式添加用户名。您可以在页面中的某处进行隐藏输入,其值等于用户名;您可以将用户名作为data-username属性附加到元素(如正文);或者你可以只在头文件中有一个纯粹定义用户名的脚本块。例如:

<input type="hidden" name="username" value="<?php echo $username;?>>

或者:

<body data-username="<?php echo $username;?>">

或者:

<head>
    <script>
        var username = "<?php echo $username;?>";
    </script>
</head>
于 2012-10-19T04:05:06.457 回答
1

在您的<body>您可以添加一个隐藏字段

<input type="hidden" value="<?=$username?>" id="username" />

在你的jQuery中,

$('a.manage-content-link').click(function (e) {
    var self = $(this),
    file = self.siblings('input[type="hidden.block-hidden-input"]').val();
    var username = $("username").val(); //use this variable where ever you want
    var ids = $(this).attr('id'); // this is the id
    self.next(".manage-content-wrap").find(".manage-content").load("file-" + file + ".php?id="+ids+"&username="+username);  //and in php file usee $_GET
    e.preventDefault();
});
于 2012-10-19T03:58:27.033 回答
0
$('a.manage-content-link').click(function (e) {
    var self = $(this);
        file = self.prev('.block-hidden-input').val();
       self.next(".manage-content-wrap").find(".manage-content").load("file-" + file + ".php");
    e.preventDefault();
});​

我建议您将用户名存储在会话中并在 php 中使用该值,而不是从脚本中传递用户名,$_SESSION['username']否则将来会导致安全问题。

演示

于 2012-10-19T03:58:46.193 回答