0

私はホームページで作業しており、管理者ができるだけ簡単にするためにAJAXインライン編集スクリプトを使用します。私が使用しているスクリプトはこれで、インライン編集スクリプトに必要なほとんどすべてが含まれています。新しい変更をキャプチャしてPHP関数に送信すると、データベースがそれらの新しい変更で更新されるときに問題が発生します。

私はAJAXとPHPを一緒に使った経験があまりないので、少し迷っていますが、見つけたコードを試しました。

$.ajax({
  type: "POST",
  url: "update_handler.php",
  data: "newfieldvalue=" + newValue,
  success: function(msg){
    alert( "Data Saved: " + msg );
  }
});

問題は、このコードを実装する方法や場所がよくわからないこと、または使用するのに適切なコードであるかどうかさえわからないことです。コードを表示するために、2つのtxtドキュメントを添付しました。

Index.php.txt

Jquery.editableText.js.txt

Inindex.php.txtは、データベースからデータを取得し、jQueryコードを少し使用するインデックスページです。にjQuery.editableText.js.txtは具体的なjQueryコードがあります。PHPハンドラーページは、正しいフィールドを取得してデータベースで更新するという点で、ほぼ標準的なものだと思います。

4

2 に答える 2

1

質問があります:

  1. $ menuIDには何かのIDが含まれており、これを使用してこのIDでテーブルから取得します。それはそうです?

正しい場合は、このIDをPHPハンドラーページに渡す必要があります。

例:

index.php:

<script type="text/javascript">
jQuery(function($){
    $('h2.editableText, p.editableText').editableText({
        newlinesEnabled: false
    });

    $.editableText.defaults.newlinesEnabled = true;

    $('div.editableText').editableText();

    $('.editableText').change(function(){
        var newValue = $(this).html();

        // important code:
          $.ajax({
          type: "POST",
          url: "save.php",
          data: { val : newValue, key:$(this).parent().tagName, id:$(this).parent().attr('class')},
          success: function(msg){
            alert( "Data Saved: " + msg );
          }
       });

    });

});
</script>

と体の部分:

<body>
<div id="wrapper">
<div id="content">
    <?php 
    $isnull = getContent($menuID, "title");
    if ($isnull != "") {

    echo "<h2 class=\"editableText\"><center><p>" . getContent($menuID, "title") . "</p></center></h2><br>";
    } else {
        null;
    }
    ?>

    <div class="editableText">

<p class="<?php echo $menuID?>"><?php echo getContent($menuID, "maincontent");?></p>
        </div>
    </script>
    <?php

    mysql_close($connection);
?>

そしてもう1つ、save.php:

<?php

# content that you send from client; you must save to maincontent
$content=$_POST['val'];

# $from=='div' if it from maincontent or $from=='center' if it from title
$from=$_POST['key'];


# id of your post 
$id=$_POST['id'];

    #here you can save your content;
?>
于 2010-02-18T11:03:49.080 に答える
0

ページ編集ページに記載されているように、スクリプトブロック内でそのコードを使用する必要があります。だからあなたはほとんどそれを持っていました。以下が機能するはずです(テストされていません)。

<script type="text/javascript">
    jQuery(function($){
        $('h2.editableText, p.editableText').editableText({
            newlinesEnabled: false
        });

        $.editableText.defaults.newlinesEnabled = true;

        $('div.editableText').editableText();

        //  bind an event listener that will be called when
        //  user saves changed content
        $('.editableText').change(function(){
             var newValue = $(this).html();

             // do something
             // For example, you could place an AJAX call here:
            $.ajax({
              type: "POST",
              url: "update_handler.php",
              data: "newfieldvalue=" + newValue,
              success: function(msg){
                alert( "Data Saved: " + msg );
              }
           });
        });

    });
</script>
于 2010-02-18T10:50:36.727 に答える