【问题标题】:AJAX commit change to database without submitAJAX 将更改提交到数据库而不提交
【发布时间】:2019-05-29 20:22:10
【问题描述】:

这只猫已经在 SO 中被剥了好几种皮,但我似乎无法将任何一种方法延伸到适合我的示例的方式。

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

独立地,以下工作:

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\");\"'

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

Uncaught SyntaxError: Unexpected end of input

jQuery 导入语句:

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

【问题讨论】:

  • 您在浏览器的开发者控制台中是否收到任何错误/警告?当您更改输入内容时,开发者工具的网络选项卡中是否有任何活动?
  • 该 PHP 代码看起来像是使用“更改”回调字符串创建了 &lt;input&gt; 元素,该字符串在 ID 和值参数周围缺少引号。
  • @Wes "$ is not defined" 表示你忘记导入 jQuery。
  • Pointy 是对的,$.ajaxjQuery-library 的一部分。如果你想使用它,你必须将它导入到你的文档中。
  • 天啊...我让它工作了。 1.10.2 的 JQuery 版本可能太旧了!我添加了 3.4.1,它立即工作......

标签: javascript php ajax apache


【解决方案1】:

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

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

将 jquery 的版本更改为 3.4.1,ajax 调用完美运行。

【讨论】:

  • 在那个 AJAX 调用中没有任何版本依赖。它应该在 1.10.2 中正常工作。
  • 我将包含行从 1.10.2 更改为 3.4.1,并且确切的代码有效。显然,版本之间发生了一些功能变化。
  • 您收到一条错误消息,指出未定义 $。问题不在于 jQuery 版本,问题在于您在更改之前根本没有加载 jQuery。可能你的 URL 有错别字。
  • 哇。好的。是的...这也很奇怪...我回到了旧的包含语句,但它不再起作用了。然后,我将 jquery URL 从 http:// 更改为 https:// 并且它起作用了。我会更新我的答案。
  • 您可能在 JavaScript 控制台中收到“混合内容”错误。如果您使用 HTTPS 加载页面,则无法使用 HTTP 加载脚本。
猜你喜欢
  • 2012-01-08
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 2013-12-20
  • 2020-06-18
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多