仅在客户端 JS 中检查数据后才调用 Ajax?

Posted

技术标签:

【中文标题】仅在客户端 JS 中检查数据后才调用 Ajax?【英文标题】:Ajax call only after data was checked in Client JS? 【发布时间】:2020-07-17 07:39:30 【问题描述】:

在 JS 中验证表单后,我将此数据发送到 MVC php 后端并且不想再次检查数据。什么是,如果有人使用不正确的数据进行邮递员请求?有没有办法确保ajax请求只能在客户端成功检查数据后触发?

【问题讨论】:

您永远不能依赖客户端验证。它可以是一个助手,以避免在用户输入数据时发出额外的请求。但你应该只“相信”服务器检查的内容 您必须确保在客户端和服务器端都检查数据,这正是您所说的原因:有人可能从其他来源发布数据。即使您使用某种形式的身份验证(例如会话的令牌 (JWT)),也可能有人发布了错误的数据。所以这里真的没有逃脱:你必须至少在服务器端进行验证。您可以使用 CORS 机制(以了解您的呼叫来自何处),但这也很容易被欺骗。 (***.com/questions/21058183/…) 【参考方案1】:

如果您需要在客户端验证数据,您可以使用:

1:jQuery验证器插件+ajax提交you can see this question

2 : beforeSend 函数

$.ajax(
    url: yourURL,
    beforeSend: function(xhr) 
        //You can check your data here and store in isValid variable.

        var isValid = false; // Based on your validation check.

        if (!isValid) 
            // Prevent the request to be sent to the (web)server.
            xhr.abort();
        
    
)
.done(function(data) 
    // after submitting
);

【讨论】:

以上是关于仅在客户端 JS 中检查数据后才调用 Ajax?的主要内容,如果未能解决你的问题,请参考以下文章

仅在 javascript 循环完成后执行 ajax 调用

仅在每个项目完成其方法调用后才返回

页面仅在第一次通过 jquery 在 mvc 中刷新 ajax 调用响应

如何配置 jQuery.Lazy() 插件仅在加载第一个元素后才加载第二个元素

Rails javascript仅在重新加载后才有效

JQuery:如何仅在完成调整大小后才调用 RESIZE 事件?