javascript - 通过ajax发出传值

标签 javascript php jquery html ajax

我的网站上有一个 HTML 表格,我可以在其中单击一个单元格然后进行编辑。我现在正尝试使用 ajax 将编辑后的值推回我的数据库。我已经测试了点击是否正常工作,内容可编辑是否正常工作,并且 ajax 通过在 updatedatabase.php 上使用简单的“hello”发送到正确的 URL,并看到它通过警报返回。当我尝试将数据从 ajax 提取到 updateddatabase.php 时,我遇到了问题。我相信也许 $(this).val() 可能不是我想要获取我刚刚用 contenteditable 编辑的单元格的内容?我这样说的原因是因为它看起来像一个空白值被传递到第二页。这是我在主页上用于点击/内容可编辑/ajax 的代码块:

    $('td').click(function(){

        var val=($(this).siblings().first().text());

        var col = $(this).parent().children().index($(this));

        $(this).prop('contenteditable', true);

        //var row = $(this).parent().parent().children().index($(this).parent());

        //alert('Date: ' + val + ', Column: ' + col);

        $(this).bind('input propertychange', function() {

            //On key stroke

            $.ajax({
              method: "POST",
              url: "updatedatabase.php",
              data: { content: $(this).val() }
            })
              .done(function( msg ) {
                alert( "Data Saved: " + msg );
            });

         });
    });

这是我在 updatedatabase.php 上的内容。我保持简单只是为了测试现在传递的值。

<?php
    if(array_key_exists("content", $_POST)) {

        echo $_POST['content'];
    }

?>

希望这是一个简单的修复,因为我相信这一切都可能与 $(this).val() 有关,但我不确定应该将其更改为什么?感谢您的帮助!!

最佳答案

部分问题在于您实际上并未捕获要编辑的表格单元格的值。在我的示例代码中使用新版本的 jQuery 我已经替换了你的 bind()keyup()因为不需要任何委托(delegate):

$('td').click(function() {
   console.log('clicked');
   $(this).prop('contenteditable', true);

   $(this).keyup(function() { // get the new value as soon as the key is released

     console.log($(this).html());

   });
 });

https://jsfiddle.net/w9e0d5wm/

正如@adeneo 在评论中提到的,表格单元格没有值属性,您可以使用 val() 获得该属性.在我的示例中,我使用了 $(this).html()获取已更改的 <td> 中的文本, 但您也可以使用 .text() .

你应该改变data: { content: $(this).val() }data: { content: $(this).html() }data: { content: $(this).text() }为了在您的 AJAX 中发送变量值。现在,如果您查看控制台,您会看到发布的内容和返回的内容。

关于javascript - 通过ajax发出传值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40245516/

相关文章:

javascript - 对象键集中的传播语法不起作用

jquery - 监控内容可编辑范围的变化?

php - Smarty 可以只读取一个 block 而不是模板吗?

javascript - 当我尝试删除文件时,为什么 Plupload 容器没有响应?

jquery - 检查链接是否包含完全匹配的文本

javascript - Highcharts 图表轴超过设定的最小值和最大值

javascript - react js功能组件中的条件渲染

javascript - AJAX 调用后更新 JSP 页面内表的值属性

javascript ajax php 调用返回另外 3 个字符

php - 更新多行 Mysql PHP 需要很长时间并且崩溃