当前位置: 首页 > 知识库问答 >
问题:

为什么JQuery脚本中返回False会阻止信息进入SQL数据库

公羊嘉
2023-03-14

编程新手--目前正在为我的学徒工作一个项目。我在Visual Studio中设置了ASP.NET应用程序。我已经添加了一个控制器,并创建了一个“联系人”页面。这工作很好,用户输入发送到数据库到目前为止没有问题。下一步是改进UI,所以我编写了以下Jquery代码:

$(document).ready(function () {
    $("#show").hide();
    $("#click").click(function () {
        $("#hide").hide();
        $("#show").toggle();
        return false;
    });
});

这将隐藏包含输入字段和提交按钮的div(用于联系人页面),并显示带有“谢谢”消息的div。该函数确实隐藏了div,但这会阻止用户输入发送到数据库。

下面是来自控制器的C#代码:

    public async Task<IActionResult> Create([Bind("Id,FullName,EmailAddress,Message")] Contact contact)
    {
        if (ModelState.IsValid)
        {
            _context.Add(contact);
            await _context.SaveChangesAsync();            
        }
        return View(contact);
    }

JQuery脚本中的“return false”似乎是个问题,但如果我使用了“return true”,那么脚本就不能工作(除非字段中没有任何输入)。

我的问题是如何让脚本和后端同时工作?

我希望这是有意义的,如果我没有提供足够的信息,我很抱歉

谢谢

共有1个答案

罗祺
2023-03-14

假设#click是一个提交按钮,那么从其处理程序函数返回false将停止父表单提交到服务器。如果您希望将用户保持在同一页面上,而不在表单提交时进行重定向,则需要停止表单提交并使用AJAX将数据发送到您的控制器。

值得庆幸的是,在jQuery中,使用$.ajax()方法可以轻松完成这一任务。然而,在这个过程中需要做一些小的调整。请注意备注:

$(document).ready(function() {
  $("#show").hide(); // I'd suggest doing this in CSS, not JS
  
  // hook to the submit of the form, not the click of the button. 
  // This is for web accessibility reasons, ie. users who browse using the keyboard only
  $('#yourForm').on('submit', function(e) { 
    // use preventDefault instead of return false. The latter prevents event bubbling 
    // which can cause unintended consequences.
    e.preventDefault(); 
    
    // send the data to the server via AJAX
    $.ajax({
      url: this.action, // set the URL to action of the form
      method: this.method, // set the HTTP verb to match the form, generally a POST in this case
      data: $(this).serialize(), // serialise the form data in to a querystring to send in the request body
      success: function() {
        // if the request worked, update the UI
        $("#hide").hide();
        $("#show").toggle();
      },
      error: function() {
        console.log('something went wrong, debug the request in devtools');
      }
    });
  });
});
 类似资料:
  • 问题内容: 我有一个简单的Lua脚本: 为什么此脚本阻止Redis服务器?如果我在另一个控制台命令中运行,例如:设置测试1,结果: 问题答案: Redis是单线程的。每个命令都会阻止它。也是命令,因此它会阻止redis。

  • 问题内容: 我正在使用a 检查我的哈希密码。我有PHP 5.5: 我上车了。我已经检查了posts的值和mysql user_password_hash返回。 我不知道为什么它返回假 有任何想法吗? 问题答案: 手册中的列长度可能是问题所在: 建议将结果存储在可扩展超过60个字符的数据库列中(255个字符是一个不错的选择)。 链接

  • 问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。

  • 问题内容: 我刚刚研究OCPJP问题,发现了这个奇怪的代码: 运行代码时,我得到: 当我们比较看起来彼此相同的两件事时,输出如何?什么NaN意思 问题答案: 溢出的操作将生成有符号无穷大,下溢的操作将生成非规范化的值或有符号的零,而数学上没有确定结果的操作将生成NaN。将NaN作为操作数的所有数值运算都会产生NaN。如前所述,NaN是无序的,因此涉及一个或两个NaN返回的数值比较操作以及涉及NaN

  • 问题内容: 即使正则表达式应返回true,程序也不会退出。代码有什么问题? 问题答案: 仅当整个字符串与正则表达式匹配时才返回。在你的情况下,你的正则表达式仅代表 一个 字符不是,或。 我怀疑您要检查字符串是否包含您在正则表达式中描述的这些特殊字符之一。在这种情况下,请将您的正则表达式括起来,以使正则表达式匹配整个字符串。哦,您不必逃脱character class内部。

  • 问题内容: 我找到了JavaDoc的方法: 返回:如果此线程已被中断,则返回true;否则返回false。 否则为假。 我对这种方法的理解有误。此外,我可能会误解Thread中的“中断”概念。 欢迎任何解释!谢谢! 程式码片段: 在线程定义中: 调用: 问题答案: 引发异常后,线程不再处于中断状态。