3

我正在尝试将 Div 的可编辑内容存储在 SQL 数据库中。但是,据我所知,isset($_POST["des"])永远不会返回 true。

(我没有做太多的网站编码,所以我可能遗漏了一些非常基本/微不足道的东西)

概览页面.php:

<?php session_start();
include_once("php_includes/check_login_status.php");
?>

<?php
    if(isset($_POST["des"]))
    {
    echo "Inside IF statement";
    include_once("php_includes/db_conx.php");
    $des = mysqli_real_escape_string($db_conx, $_POST['des']);    
    $sql = "UPDATE users SET project_description='$des' WHERE   username='$log_username'";
    }
?>

<!DOCTYPE html>
<html>
<head>

    <script src="js/main.js"></script> <!--Points to external java script file-->
    <script src="js/ajax.js"></script> <!--Points to external java script file-->

    <script type="text/javascript">

    function save_description()
    {
        var des = _("project_description").value;
        var ajax = ajaxObj("POST", "overview_page.php"); 
        //ajax.onreadystatechange = function() sorry this one shouldn't be here
        ajax.send("des="+des); 
    }

    </script>
</head>    
<body>    

  <?php include_once("template_pagetop.php"); ?>  

  <div id="pageMiddle">
    <div id="left_window">

            <div id="project_description" name="project_description" contentEditable="true">
            Please enter project description...
            </div>
            <center>
            <button id="save" onclick="save_description()">Save</button>
            </center>
    </div>
  </div>      
</body>    
</html>

和外部脚本:

ajax.js:

function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
   return true; 
}}

主.js:

function _(x)
{
return document.getElementById(x);
}
4

2 回答 2

1

所以我把你的代码交给了 jsFiddle 并创建了一个新的小提琴,控制台中出现的第一件事(浏览器中的 F12 - 至少在 Chrome 中)是事件实际上没有触发。

因此,我将您的save_description()方法移到了事件绑定中(还有其他方法):

document.getElementById('save').onclick = function () {
    var des = _("project_description").innerHTML;
    var ajax = ajaxObj("POST", "overview_page.php");
    //ajax.onreadystatechange = function() sorry this one shouldn't be here
    ajax.send("des=" + des);
}

另请注意,我更改了des = _("project_description")对 innerHTML 的访问。

这似乎至少使请求具有价值。之后,检查您的服务器端脚本。

于 2013-09-03T10:59:19.303 回答
0

我会假设您的帖子正在发送“des”值。

但是您的代码在“overview_page.php”文件中?如果不是,您将“des”值发送到一个不存在的文件,或者您在该文件中没有代码。在这种情况下,您的 if(isset($_POST["des"])) 永远不会返回 true。

您需要有overview_page.php 文件。

如果您不确定您的 ajax 代码是否按要求工作,请在“save_description()”函数中使用一些 Jquery post 函数。

于 2013-09-03T11:04:38.267 回答