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つの変数を渡す方法。1つはPHPから、もう1つはIDからですか。

4

3 に答える 3

2

http://api.jquery.com/jQuery.ajax/.ajax()の代わりにjQueryを使用して.load()ください

$('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 に答える