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 将 viewContent 放入 #mainWrap 中。只需确保加载 DOM 并使用 $(document).ready() 包装您的 js 代码并添加:

$('#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 来完成。我添加了一个 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 回答