0

私は、データベースからデータをフェッチし、次のように javascript/jquery を使用して処理するアプリケーションに取り組んでいます。

    $sqlEdit = "select revisionContent from tbl_revision where revisionId='".$_SESSION['contentId']."'";      //Query to fetch the result
    $rsEdit = $dbObj->tep_db_query($sqlEdit);
    $resEdit = $dbObj->getRecord($rsEdit);
    $IdLessContent = $resEdit['revisionContent']; 

 <script language="javascript">  
    var getSavedContent = '<?php echo json_encode($IdLessContent); ?>';
    var trimmedCont=($.trim(getSavedContent).slice(1));
    //console.log(trimmedCont);
    var lengthCont= trimmedCont.length;
    var trimmedCont=$.trim(trimmedCont.slice(0,lengthCont-1));
    console.log(trimmedCont);
    var test = $('<div class="addId">');
    test.append(trimmedCont);
    //console.log(test.html());
    test.children().each(function(index, value) {
         $(this).attr('id', "com-"+randomString());
     });
   //console.log(test.html());  
    viewContent  = test.html();

viewContentで必要なデータを取得します。このセクションのページに表示したい

        <div id="mainWrap" onClick="fnDestroyEditable();">
             <?php echo $resEdit['revisionContent']; ?>   //THis is the unprocessed data displayed directly from database.I want to display the processed data here
        </div> 

両方が異なるため(サーバー側とクライアント側) 、JavaScript変数をPHPに取得できないことはわかっています。しかし、どうすれば私のシナリオでこれを達成できますか? 編集返されたデータはデータベースに保存されたHTMLであることを追加したいと思います。したがって、html を取得します->それを処理します(id 属性を追加します)->処理後に戻りたいです

4

2 に答える 2

2

javascript を使用して #mainWrap 内に viewContent を配置できます。$(document).ready() で js コードをラップして DOM がロードされていることを確認し、以下を追加します。

$('#mainWrap').html(viewContent);

あなたの機能の最後に。

$(document).ready(function () {
    var getSavedContent = '<?php echo json_encode($IdLessContent); ?>';
    var trimmedCont=($.trim(getSavedContent).slice(1));
    //console.log(trimmedCont);
    var lengthCont= trimmedCont.length;
    var trimmedCont=$.trim(trimmedCont.slice(0,lengthCont-1));
    console.log(trimmedCont);
    var test = $('<div class="addId">');
    test.append(trimmedCont);
    //console.log(test.html());
    test.children().each(function(index, value) {
        $(this).attr('id', "com-"+randomString());
    });
    //console.log(test.html());  
    viewContent  = test.html();
    // put viewContent in the innerHtml of your wrapper
    $('#mainWrap').html(viewContent);

});

サーバーに情報を送り返す必要がある場合は、ajax を使用する必要があります。要素の 1 つをクリックすると呼び出される JavaScript 関数 addId() を追加しました。新しいコードは次のとおりです。

$(document).ready(function () {
    var getSavedContent = '<?php echo json_encode($IdLessContent); ?>';
    var trimmedCont=($.trim(getSavedContent).slice(1));
    //console.log(trimmedCont);
    var lengthCont= trimmedCont.length;
    var trimmedCont=$.trim(trimmedCont.slice(0,lengthCont-1));
    console.log(trimmedCont);
    var test = $('<div class="addId">');
    test.append(trimmedCont);
    //console.log(test.html());
    test.children().each(function(index, value) {
        $(this).attr('id', "com-"+randomString());
    });
    //console.log(test.html());  
    viewContent  = test.html();
    // put viewContent in the innerHtml of your wrapper
    $('#mainWrap').html(viewContent);
    $('#mainWrap .addId').children().click(function({
      addId(this);
    }));
}


addId = function(elem){
  // elem is the child element you clicked on
  // $(elem).attr('id') should be "com-[randomString]"
    $.ajax({
        type: "POST",
        url: "path/to/php/script", // update id PHP script
        data: data, // whatever you need in json format
        dataType: "json",
        error: function() {
        // error function you want to implement
            errorFunction();
        },
        success: function(resp) {
            // do whatever you need with the response from you PHP action
        }
    });
};

人間の介入なしでサーバーを呼び出す必要がある場合は、単に置き換えてください

$('#mainWrap .addId').children().click(function({
    addId(this);
}));

と:

$('#mainWrap .addId').children().each(function({
    addId(this);
}));
于 2013-01-24T13:24:36.770 に答える
1

私があなたを理解していない場合は、js コードの最後に次の行のみを追加してください。

$('#mainWrap').html(viewContent);

JS データを PHP に送信する場合は、ajax リクエストを使用する必要があります。

于 2013-01-24T13:18:59.613 に答える