I have a problem trying to validate a user value using the jQuery Validation plugin.
The validation seems to fire correctly and call the web service function exactly as I want but, even if the server function does work correctly and returns a true
/false
result the field is always invalid.
This is the validation code on the client side
$('#myForm').validate({
errorContainer: container,
开发者_JAVA百科 errorLabelContainer: $("ol", container),
wrapper: 'li',
meta: "validate",
rules: {
Code: { required: true, maxlength: 15, remote: function () {
return {
type: "POST",
url: GetBaseWSUrl() + 'MyService.asmx/IsValidCode',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ umltCode: $('#Code').val() })
}
}
},
Description: { required: true, maxlength: 255 },
Notes: { maxlength: 255 }
},
messages: {
// ... omitted for brevity
},
submitHandler: function (form) {
saveObject(form);
}
});
Using fiddler I am able to see that a call is made to the server and that the server is returning a json true
/false
value depending on the case as in the following sample:
{"d":false}
or
{"d":true}
Despite this, the plugin still mark the field as invalid. Any suggestion?
EDIT: this is my server function
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public object IsValidCode(string umltCode)
{
[...]
if (u != null)
return false;
return true;
}
}
The problem is that instead of
true
your web service returns
{"d":true}
The d
property should be removed.
ASMX is considered legacy so I would get rid of it at the first place. But until then you could also use the dataFilter
property, like this:
remote: function() {
return {
type: "POST",
url: GetBaseWSUrl() + 'MyService.asmx/IsValidCode',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ umltCode: $('#Code').val() }),
dataFilter: function (data) {
var x = (JSON.parse(data)).d;
return JSON.stringify(x);
}
};
}
精彩评论