Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript从另一个页面编辑表内容_Javascript - Fatal编程技术网

如何使用javascript从另一个页面编辑表内容

如何使用javascript从另一个页面编辑表内容,javascript,Javascript,我正在寻找添加一个页面到我的网站,将有一个表,将显示可用的产品 我希望能够做到的是,使表的内容可以从另一个页面(比如管理页面)更改。是否可以使用JavaScript或类似的东西来做类似的事情?如果是的话,你能给我指一下正确的方向吗 非常感谢。方法不多 不涉及服务器端 您需要对另一个窗口的引用。例如,您可以通过打开窗口-window.open()来获得该信息 然后使用HTML DOM方法,例如document.getElementById(…),然后使用特定元素的API: 涉及服务器端 这意味

我正在寻找添加一个页面到我的网站,将有一个表,将显示可用的产品

我希望能够做到的是,使表的内容可以从另一个页面(比如管理页面)更改。是否可以使用JavaScript或类似的东西来做类似的事情?如果是的话,你能给我指一下正确的方向吗

非常感谢。

方法不多

不涉及服务器端 您需要对另一个窗口的引用。例如,您可以通过打开窗口-
window.open()
来获得该信息

然后使用HTML DOM方法,例如
document.getElementById(…)
,然后使用特定元素的API:

涉及服务器端 这意味着一个页面将向服务器发送一些数据,另一个页面将读取这些数据

您可以使用AJAX概念来实现这一点——请参见
XMLHttpRequest
中的答案


另一个页面必须定期检查,或者第一个页面必须给它一些信号——调用您编写的JavaScript方法,或者重新加载窗口。另一种选择是使用推送概念,但这目前是一种先进的技术。

您可以使用
XMLHttpRequest
,但我建议您使用jQuery,它将是
$.ajax()
函数。这样做的目的是将数据发送到服务器,而不刷新页面,也不让任何人真正了解页面

因此,您可以在管理端向服务器发送一些更改数据,在客户端发送一些更改数据,除非您使用
websocket
,否则您必须每隔几秒钟与服务器联系一次,以查看是否有任何更改。然后服务器将向您发送管理员所做的任何更改,然后您将使用javascript处理该结果以在网页上显示更改

下面是使用jQuery请求的示例

在您的php中,您将有如下内容

注意——如果你不熟悉这些东西,那么做起来并不容易。但你会学到的。 这是有趣的部分。在幕后还有很多,但这就是它的想法


这是可能的,但有一些限制:

您应该更改显示产品的表,以获取使用ajax显示的值。然后你有两种可能:(我很确定还有更多,但我现在只想到这两种)

  • 创建一个计时器,它将每X秒获取一个产品的值
  • 创建一个侦听器,当数据库中的值更新时将调用该侦听器
通过这种方式,您可以更改后端中的值,并且将在前端视图中自动更新。 您可以查看他们使用“”的位置

可能的解决办法 使用AJAX调用,您可以将表本身存储在HTML文件中。

下面是一个示例页面。如果你有任何问题,请毫不犹豫地问他们。我添加了一些函数,比如addrow

管理员管理页面(index.html)

jQuery AJAX
tr,td,th{
边界塌陷:塌陷;
边框:1px实心;
}
运输署{
高度:22px;
最小宽度:125px;
}
"http://jquery.com"
/* ---------------------------------- */
/*请参阅此答案的脚本部分*/
/* ---------------------------------- */
jqueryajax表

  • 剧本 页面加载时的
    /**/
    $(文档).ready(函数(){
    var getTable=函数(){
    /*我们把舱倒空*/
    $('#myTable').html('');
    /*我们把桌子装上东西*/
    $.get('myTable.html',函数(回调_数据){
    var table=回调_数据;
    document.getElementById('myTable')。innerHTML=table;
    });
    };
    getTable();
    /* ----- */
    /*新行按钮*/
    $('#addRow')。单击(函数(事件){
    /*防止真正的锚点击事件(转到href链接)*/
    event.preventDefault();
    /*我们得到一行中的列数*/
    var colNumber=$($('#myTable tbody tr')[0])。children('td')。length;
    var tr=document.createElement('tr');
    var td=“”;
    对于(变量i=0;i

    saveTable.php
    
    

    myTable.html
    
    洛雷姆·伊普苏姆·多洛。
    维利特,维罗,奎斯。
    身份证,多洛尔,
    
    if($_POST['type'] === 'updateProduct') {
       // update database with new price
       // You could have a field in the database that now say's 
       // that the product has been updated
    
       //  send the response 
    
       echo 'done';
    }
    
    // And the admin ajax something like this 
    $.ajax({
        type: 'POST',
        url: 'linkToYourFile.php', // The php file that will process the request
        data: {
            type: 'updateProduct', // This is all the data you wan't to send to your php file
            productID: 8484737,
            newPrice: '$100.99'
        },
        success: function( result ) { // if we get a response 
          if(result === 'done') {
            // The product has been updated from the admin side 
          }
        }
    });
    
    // on the client side
    
    if($_POST['type'] === 'checkForUpdates') {
       // Contact the database and check that $_POST['productID']
       // has been updated 
       // use php's json_encode function to echo the result
    }
    
    var checkForUpdates = function() {
        $.ajax({
            type: 'POST',
            url: 'LinkToYourFile.php',
            dataType: 'JSON',
            data: {
                type: 'checkForUpdates',
                productId: 8484737
            },
            sucess: function ( result ) {
                if( result.updated === true ) {
                   someElementPrice.textContent = result.newPrice;
                } 
            }
        });
    };
    
    window.setInterval(checkForUpdates, 3000); // Send's the update request every 3 seconds
    
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jQuery AJAX</title>
        <link type="text/css" rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
        <style rel="stylesheet" type="text/css">
        tr, td,th{
            border-collapse: collapse;
            border:1px solid;
        }
        td{
            height:22px;
            min-width:125px;
        }
        </style>
    
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">"http://jquery.com"</script>
        <script type="text/javascript">
            /* ---------------------------------- */
            /* See the SCRIPT part of this answer */
            /* ---------------------------------- */
        </script>
    </head>
    <body>
        <h1>jQuery AJAX Table</h1>
        <section>
            <article>
                <div id="myTable" contenteditable></div>
                <nav data-type="table-tools">
                    <ul>
                        <li>
                            <a href="#" id="addRow">New row</a>
                        </li>
                        <li>
                            <a href="#" id="addColumn">New column</a>
                        </li>
                        <li>
                            <a href="#" id="saveTable">Save table</a>
                        </li>
                    </ul>
                </nav>
            </article>
        </section>
    </body>
    </html>
    
        /* On page load */
        $(document).ready(function () {
            var getTable = function () {
                /*We empty the div */
                $('#myTable').html('');
                /*We load the table */
                $.get('myTable.html', function (callback_data) {
                    var table = callback_data;
                    document.getElementById('myTable').innerHTML = table;
                });
            };
            getTable();
    
            /* ----- */
    
            /* New row button */
            $('#addRow').click(function (event) {
                /* Prevents the real anchor click event  (going to href link)*/
                event.preventDefault();
    
                /* We get the number of columns  in a row*/
                var colNumber = $($('#myTable tbody tr')[0]).children('td').length;
    
                var tr = document.createElement('tr');
                var td = "";
                for (var i = 0; i < colNumber; i++) {
                    td = document.createElement('td');
                    td.appendChild(document.createTextNode("\n"));
                    tr.appendChild(td);
                }
                $('#myTable tbody').append(tr);
            });
    
            $('#addColumn').click(function (event) {
                event.preventDefault();
                $.each($('#myTable table thead tr'), function () {
                    $(this).append('<th></th>');
                })
                $.each($('#myTable table tbody tr'), function () {
                    $(this).append('<td></td>');
                });
            });
    
            $('#saveTable').click(function (event) {
                event.preventDefault();
                var table = $('#myTable').html();
                $.post('saveTable.php', {
                    'myTable': table
                }, function (callback_data) {
                    console.log(callback_data);
                    $('#myTable').slideToggle('fast');
                    setTimeout(function () {
                        getTable();
                        $('#myTable').slideToggle();
                    }, 100);
    
                });
            });
        });
    
    <?php
        if(!isset($_POST['myTable']))
            die('No data provided.');
    
        $table = $_POST['myTable'];
    
        $handle = fopen('myTable.html','w');
        $result = fwrite($handle,$table);
        if($result)
            fclose($handle);
        else
            die('Error writing file');
    ?>
    
    <table>
        <thead>
            <tr>
                <th>Lorem ipsum dolor.</th>
                <th>Velit, vero, quis.</th>
                <th>Id, dolore, commodi!</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Voluptatibus, maiores.</td>
                <td>Quod, et.</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Ex, assumenda!</td>
                <td>Qui, pariatur!</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Alias, amet.</td>
                <td>Delectus, itaque!</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Praesentium, quod.</td>
                <td>Dolor, praesentium?</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Beatae, perferendis!</td>
                <td>Voluptates, earum!</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Ratione, quis.</td>
                <td>Cupiditate, repellendus.</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Porro, labore.</td>
                <td>Eligendi, nemo!</td>
            </tr>
            <tr>
                <td>Lorem ipsum.</td>
                <td>Soluta, suscipit.</td>
                <td>Dolorem, dolores.</td>
            </tr>
        </tbody>
    </table>