首页 > 解决方案 > AJAX 将更改提交到数据库而不提交

问题描述

这只猫已经在 SO 中以多种方式剥皮,但我似乎无法将任何一种方式延伸到适用于我的示例的方式中。

我创建了一个由三列组成的表。第三列是一个文本框,将显示“未安装”或日期的占位符。我需要一个 onChange 事件来触发 PHP 发布脚本以将输入的值发送到数据库。

独立地,以下工作:

HTML

<div class="row">
    <form action="./functions/post_Updates.php" method="Post">
         <input name="RAID">
         <input name="InstalledOn">
         <button type="submit" value="go">go </button>
    </form>
</div>

PHP

$RAID = $_POST['RAID'];
$InstalledOn = $_POST['InstalledOn'];

echo "<p>$RAID</p>";
echo "<p>$InstalledOn</p>";

$tsql = "insert into dbo.test (test) values ('$InstalledOn $RAID')";

提交后,TEST 表得到更新。

我以以下方式设置我的表格元素(作为生成表格本身的 PHP 函数的一部分:HTML

<input type=\"text\" class=\"InstalledOn_Input\" name=\"$r_RAAID\" onChange=\"DynamicUpdateCP($r_RAAID,this.value);\" placeholder=\"$r_CPInstalledOnDate\"></input>

JS

function DynamicUpdateCP(id,value){
    $.ajax({
        data: {RAID: id, InstalledOn: value},
        url: './functions/post_Updates.php',
        type: 'POST'
    });
    alert(id + ' has changed to ' + value);

}

如果我删除 $.ajax 部分,alert() 会按预期触发。但是,目前,编辑一个字段,然后按回车键或更改焦点,根本没有任何作用。

任何关于缺失环节的指导,在这里,都是惊人的。谢谢你。


@Pointy我将 onchange=... 的部分重新格式化为:

onChange=\"DynamicUpdateCP(\"$r_RAAID\",\"this.value\");\"'

我在调试控制台中得到的错误是:

未捕获的 SyntaxError:输入意外结束

jQuery 导入语句:

<script rel="javascript" type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

标签: javascriptphpajaxapache

解决方案


编辑:使用 HTTP 调用 JQuery 脚本,而不是 HTTPS。更新如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

将 jquery 的版本更改为 3.4.1,并且 ajax 调用运行良好。


推荐阅读