Php 使用Ajax/jQuery(内联文本编辑)检索标记中的数据

Php 使用Ajax/jQuery(内联文本编辑)检索标记中的数据,php,jquery,ajax,mysqli,Php,Jquery,Ajax,Mysqli,我已经研究这个问题好几个小时了,但是我相信javascript文件中的某个地方有错误,但是我无法找出它 现在alertmsg给了我一个未定义的索引:editPost.php中的headline/text 以下PHP代码位于profile.PHP文件中。我要检索“我想要此数据”标记中的数据,即我要检索$row['headline']和$row['text']中的数据 然后,上面的函数将数据发布到editPost.php,后者将数据提交到数据库。下面是我如何做到这一点的一个片段: $headline

我已经研究这个问题好几个小时了,但是我相信javascript文件中的某个地方有错误,但是我无法找出它

现在alertmsg给了我一个未定义的索引:editPost.php中的headline/text

以下PHP代码位于profile.PHP文件中。我要检索“我想要此数据”标记中的数据,即我要检索$row['headline']和$row['text']中的数据

然后,上面的函数将数据发布到editPost.php,后者将数据提交到数据库。下面是我如何做到这一点的一个片段:

$headline = $_POST['headline'];
$text = $_POST['text'];
$id = $_POST['id'];
$sql = "UPDATE blogpost SET headline = '$headline', text = '$text', edit_time = NOW(6) WHERE id = '$id'";
在当前状态下,当数据发送到数据库时,它会使用id查找正确的表,并在标题和文本字段中插入,但会正确更新编辑时间


谢谢大家!

我休息了几个小时,回来后我对如何解决这个问题有了更多的想法。在这里和那里稍作调整后,我终于做到了

对于以后访问此线程的人,我更改了以下内容以使其正常工作:

我的profile.php代码段现在是这样的,我将数据headline=headline切换为name=headline等:

我改变了元素的目标定位方式,因此目标定位一个元素不会将内容复制到另一个元素

$headline = $_POST['headlineContent'];
$text = $_POST['textContent'];
$id = $_POST['id'];
if (!empty($headline)) {
    $sql = "UPDATE blogpost SET headline = '$headline', edit_time = NOW(6) WHERE id = '$id'";
} elseif (!empty($text)) {
    $sql = "UPDATE blogpost SET text = '$text', edit_time = NOW(6) WHERE id = '$id'";
}
最后,在我的editPost.php文件中,我添加了一个检查来查看变量是否为空。如果为空,则表示该元素未更新,因此它仅更新另一个元素

$headline = $_POST['headlineContent'];
$text = $_POST['textContent'];
$id = $_POST['id'];
if (!empty($headline)) {
    $sql = "UPDATE blogpost SET headline = '$headline', edit_time = NOW(6) WHERE id = '$id'";
} elseif (!empty($text)) {
    $sql = "UPDATE blogpost SET text = '$text', edit_time = NOW(6) WHERE id = '$id'";
}

正如您所看到的,代码本身远不是完美的,实际上相当可怕,但它现在可以工作。我以后一定会努力改进它,但如果有任何反馈,我将不胜感激。我知道这不是codereview的地方。

请在控制台中查看您的帖子请求,将哪些变量发送到editPost。php当我编辑标题时,将发布以下内容:Source content=Hello+here&id=22。大家好!ID22您的查询结果似乎不包含标题或文本。您的错误消息表示您正在尝试访问具有该名称的数组元素,但该数组元素不存在。在PHP文件中,尝试var_dump$row;我在数据库中编辑了一个字段以显示值这是一个标题,这是一些文本。下面我使用var_dump$row得到了以下响应;数组5{[startdate]=>string15 2015年6月30日星期二[enddate]=>string0[headline]=>string0[text]=>string0[id]=>string2 22}
while ($row = mysqli_fetch_array ($resultPost, MYSQLI_ASSOC)) {
    echo '<h1><div contenteditable="true" name="headline" data-id=' . $row['id'] . '>' . $row['headline'] . '</div></h1>';
    echo '<p><div contenteditable="true" name="text" data-id=' . $row['id'] . '>' . $row['text'] . '</div></p>';
}
$(document).ready(function() {
$('body').on('blur', "div[name=headline]", function() {

    var headline = $("div[name='headline']:visible").text();
    $.ajax({
        type: 'POST',
        url: 'editPost.php',
        data: {
            headlineContent: $.trim($(this).text()),
            id: $(this).data('id'),
            headline: $(this).data(headline),
        },
        success: function(msg) {
            alert(headline);
        }
    });
});
});

$(document).ready(function() {
$('body').on('blur', "div[name=text]", function() {

    var text = $("div[name='text']:visible").text();
    $.ajax({
        type: 'POST',
        url: 'editPost.php',
        data: {
            textContent: $.trim($(this).text()),
            id: $(this).data('id'),
            text: $(this).data(text),
        },
        success: function(msg) {
            alert(text);
        }
    });
});
});
$headline = $_POST['headlineContent'];
$text = $_POST['textContent'];
$id = $_POST['id'];
if (!empty($headline)) {
    $sql = "UPDATE blogpost SET headline = '$headline', edit_time = NOW(6) WHERE id = '$id'";
} elseif (!empty($text)) {
    $sql = "UPDATE blogpost SET text = '$text', edit_time = NOW(6) WHERE id = '$id'";
}