【问题标题】:Saving data with jQuery/Ajax使用 jQuery/Ajax 保存数据
【发布时间】:2017-09-23 18:30:16
【问题描述】:

我希望每当人们开始在文本框中输入时发出警报。它将返回“Data Saved:” + my msg,位于 test.php 文件夹中。

$("#textbox").on('change keyup paste', function() {

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

我尝试将“方法”更改为“类型”。 使用 .serialize()。 使用成功:函数

我不确定是什么问题。谢谢!

编辑: 添加了错误代码。到目前为止,控制台上没有任何错误消息。

             $.ajax({
                  method: "POST",
                  url: "test.php",
                  data: { content: $("#textbox").val() }
                })

              error: function (request, error) {
                alert("An error occurred");
               },

                success: function (response) {
              if (response == 'OK') {
                $("#diary").val()
               } else {
                alert("An error occurred");


                  }

【问题讨论】:

  • 您在 javascript 控制台中遇到什么错误?
  • 首先检查它是否命中服务器。其次编写 .fail 方法,该方法将帮助您识别错误所在.. $.ajax({ }).done().fail(function(data){ })
  • 它用 ajax 的行错误来说明这一点: Uncaught TypeError: $.ajax is not a function at HTMLTextAreaElement. (loggedinpage.php:92) at HTMLTextAreaElement.dispatch (jquery-3.1. 1.slim.min.js:3) 在 HTMLTextAreaElement.q.handle (jquery-3.1.1.slim.min.js:3)
  • @krishnar 是的,我之前编写了一个代码,以在输入某些内容并且它正在工作时发出警报。到目前为止,我已经添加了一个错误代码,但它仍然无法正常工作。

标签: javascript jquery ajax


【解决方案1】:

从您的评论中,您收到以下错误:

$.ajax 不是 HTMLTextAreaElement 中的函数。 (loggedinpage.php:92) 在 HTMLTextAreaElement.dispatch (jquery-3.1.1.slim.min.js:3) 在 HTMLTextAreaElement.q.handle (jquery-3.1.1.slim.min.js:3)

错误告诉您代码无法在任何地方找到 $.ajax() 函数来执行它。

同时,该消息泄露了您正在使用 jQuery Slim 的事实。该库的精简版本不包括 $.ajax() 函数等。你需要使用完整版的jQu​​ery。

最新(或任何最近的)发行说明中的​​详细信息(在“Slim build”部分):https://blog.jquery.com/2017/03/20/jquery-3-2-1-now-available/

作为旁注,我很惊讶您希望每次用户在文本框中键入字符时都显示警报。我预测这很快就会让用户非常恼火。也许只是在附近的 div 中显示一条消息(不会窃取焦点并阻止他们输入)会更好。我还想问是否真的有必要在每次输入字符时将数据保存到服务器?如果用户键入很多,它将触发数十个 ajax 请求。您包含“keyup”就是这样做的原因。也许重新考虑一下您希望它如何工作,以及为什么。

【讨论】:

  • 感谢 @ADyson 使用 jQuery 迁移插件替换 Bootstrap 主题中的 jQuery 代码。我补充说:<script src="https://code.jquery.com/jquery-3.0.0.js"></script> <script src="https://code.jquery.com/jquery-migrate-3.0.0.js"></script> 不用担心!我明白!我现在正在做一个例子。虽然它现在可以工作,但控制台会写这条消息,说它与 Quirks 模式不兼容。不确定那是什么意思。 JQMIGRATE: Migrate is installed with logging active, version 3.0.0 jquery-migrate-3.0.0.js:62 JQMIGRATE: jQuery is not compatible with Quirks Mode
  • @allan 没问题。如果答案对您有所帮助,请记住将其标记为已接受 - 谢谢:-)。 en.wikipedia.org/wiki/Quirks_mode 很好地解释了怪癖模式是什么。如果您在 quirks 模式下运行,那么几乎可以肯定您使用的是过时的 DOCTYPE 声明(或根本没有声明)。除非您需要支持非常旧的浏览器,否则没有理由不使用 HTML5 文档类型 (<!DOCTYPE html>)
  • @allan P.S.如果您添加了 jquery.js,请确保您也删除了 jquery slim,否则您可能会遇到奇怪的冲突。此外,在上线时使用缩小的 (.min.js) 版本可能会更好,因为它是压缩的,因此加载速度会更快,而且一旦上线,阅读源代码的重要性就不那么重要了不再调试
  • 注意所有要点。我已经添加了缩小版,所以现在看起来像这样 https://code.jquery.com/jquery-3.0.0.min.js 感谢帮助!
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多