【问题标题】:Javascript, Jquery Validator plugin, ajax - async substitution with callbackJavascript,Jquery Validator 插件,ajax - 带回调的异步替换
【发布时间】:2016-08-15 20:21:05
【问题描述】:

我是 javascript 的初学者,所以不断学习很多新东西,所以如果我问了一个非常愚蠢的问题,请不要生气,因为我还在学习。尝试实现回调而不是异步:false。将此方法添加到 jquery Validator 插件。使用 async false 可以正常工作,但我不想使用它。任何帮助表示赞赏:)

$.validator.addMethod( "CheckIfUsed",

function(value, element) {
var isSuccess
$.ajax({url :"/x/validate",
    data :  JSON.stringify({model:$(element).data('model'),
    field:element.name,
    equals:value}),
    contentType : 'application/json',
    type : 'POST',
    async: true,
    success: function(res){
                { isSuccess = res === "true" ? true : false }
        }
    })

return isSuccess
 },"That data allready used");

试试这个:Javascript callback functions with ajax - 没用

或者我做错了什么

【问题讨论】:

  • 你看过插件中包含的“远程”验证吗? jqueryvalidation.org/remote-method
  • 不完全,不记得这种方法出了什么问题。根本无法让它工作
  • 是否有原因“远程”在您的情况下不起作用,文档中的示例几乎与您在此处描述的完全一样。
  • 我很清楚它如何帮助异步。目前的问题是 async true 它不会等待数据。如果我这样做,问题仍然存在还是我错了?
  • 只要知道你现在使用 asnyc 的方法永远不会有任何收获:true。它永远不会在返回 null 之前等待结果

标签: javascript jquery ajax callback


【解决方案1】:

从文档中,远程方法几乎完全按照您的描述进行。 https://jqueryvalidation.org/remote-method/ 这是我在当前代码库的许多部分中使用的示例。

$("#SIN").rules("add", {
        remote: {
            url: '/x/ValidateUsed',
            async: true,
            data: {
                sin: function () { return $("#SIN").val(); },
                clientId: $("#ClientID").val()
            }
        }
    });

请记住,“验证”或在我的情况下为“ValidateUsed”需要返回true(如果未使用)或nullundefined,或自定义消息(如That data already used)(如果正在使用)。

【讨论】:

  • 我不想使用 async: false 因为 -> 主线程上的同步 xm​​lhttprequest 已被弃用,因为它对最终用户体验产生不利影响。如需更多帮助,请查看...
  • 这将采用完整的 jQuery.ajax 调用所做的所有选项,据我所知,您可以添加任何您想要的回调。
  • 它可以与异步一起正常工作,但由于该消息(同步..)我想删除它。我以某种方式错误地添加了回调,因此它无法获取数据。您可以修改我的代码以使其正确吗?我很难过我做错了什么或我错过了什么
  • 你能用示例 HTML 创建一个 jsfiddle 并将你的 javascript 粘贴到那里吗?我可以为你修改你的小提琴。
猜你喜欢
  • 2018-09-05
  • 2011-03-11
  • 2017-06-29
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多