gpt4 book ai didi

jQuery 验证远程 ajax 规则错误与验证

转载 作者:行者123 更新时间:2023-12-01 02:59:37 25 4
gpt4 key购买 nike

我在尝试使用远程规则和 jQuery 验证来验证我的字段时遇到困难。它使 ajax 调用正常并传递正确的数据。 Web 服务运行良好,并根据需要返回 true 或 false。

我的问题在于规则总是负面的。我不确定我是否会以错误的格式返回真/假。想法/想法?

这是我的规则:

$("[id$=txtOther]").rules("add", {
remote: function () {
return {
type: "POST",
url: $("[id$=hBaseURL]").val() + "Webservice/Validation.asmx/ValidateUser",
data: JSON.stringify({ FullName: $("[id$=txtOther]").val(), UserID: $("[id$=txtOtherID]").val() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
};
},

messages: {
remote: ""
}
});

这就是我的网络服务的响应方式:

d       [Object {__type="Validation+Results", Status="true"}]
0 Object {__type="Validation+Results", Status="true"}
Status "true"
__type "Validation+Results"

最佳答案

好吧,这就是我最终必须做的来解决这个问题。首先,我接受了安德鲁所说的内容,并找到了更多支持他所说内容的内容。最有帮助的是这篇文章:

Problem with jQuery validate plugin (remote validation)

这篇文章基本上将这些行添加到我现有的代码中:

dataFilter: function (data) {
var x = (JSON.parse(data)).d;
return JSON.stringify(x);
}

问题仍然存在。我开始思考可能出了什么问题,并开始想知道我的网络服务以及除了 .d 响应之外它是如何返回的。一段时间以来,我已经使用了该网络服务的不同修改,但由于某种原因,该服务无法正常工作。在仔细研究了它之后,我想到了它返回一个值列表的事实,因为这是我在其他地方需要的。我只返回该列表中的一项,但我想知道如果我只返回该项目而不是列表会发生什么。我的网络服务现在返回了这个:

{"d":"true"}

这仍然不适用于我的原始代码,但现在我相当确定这是因为它返回为 d。我在其他站点找到的 dataFilter 仍然不允许它工作,因此我稍微修改了 dataFilter 以返回如下纯文本:

dataFilter: function (data) {
var x = (JSON.parse(data)).d;
return x;
}

最后我找到了一个有效的解决方案。在此过程中,我遇到了在验证失败后再次触发验证的问题,或者即使出现错误也应该返回 true 的问题。关于此问题还有很多信息,因为这不是最初的问题,所以我不会详细讨论所有内容。一篇有用的帖子是: jquery validation - remote method won't trigger after valid然而,正是因为它们如此相关,所以我使用此代码来重置验证,即使最近进行了真正有效的调用,也允许再次触发验证。

$("[id$=txtOther]").removeData("previousValue");

我仍在使用此代码以及以下代码来按需触发验证:

var resetValid = $("[id$=txtOther]").valid();

这是我的远程验证的最终代码:

 $("[id$=txtOther]").rules("add", {
remote: function () {
return {
type: "POST",
url: $("[id$=hBaseURL]").val() + "Webservice/Validation.asmx/ValidateUser",
data: JSON.stringify({ FullName: $("[id$=txtOther]").val(), UserID: $("[id$=txtOtherID]").val() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
dataFilter: function (data) {
var x = (JSON.parse(data)).d;
return x;
}
};
},
messages: {
remote: "Additional reviewers must be selected from available options"
}
});

关于jQuery 验证远程 ajax 规则错误与验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com