Jquery .svc webservice返回d json对象
我正在使用Bootstrapvalidator.com从jquery调用.net svc服务。Im使用远程选项检查用户名是否已被使用,请参见此处: 问题是dat my.svc服务返回bool值,如:{d:true},而bootstrapvalidator需要{valid:true}。我在某个地方读到微软出于安全原因使用d,但我再也找不到这篇文章了 问题是,我能返回{valid:true}还是我的结果总是{d:true}。如果后一种情况是这样的,那么我想尝试使输出像:{d:[valid:true]},希望bootstrapvalidator能为valid做一个.find,也许这会起作用。但我不知道如何创建这样的输出 功能:Jquery .svc webservice返回d json对象,jquery,web-services,Jquery,Web Services,我正在使用Bootstrapvalidator.com从jquery调用.net svc服务。Im使用远程选项检查用户名是否已被使用,请参见此处: 问题是dat my.svc服务返回bool值,如:{d:true},而bootstrapvalidator需要{valid:true}。我在某个地方读到微软出于安全原因使用d,但我再也找不到这篇文章了 问题是,我能返回{valid:true}还是我的结果总是{d:true}。如果后一种情况是这样的,那么我想尝试使输出像:{d:[valid:true]
public bool CheckUsername(string userName) {
try {
using (var dbC = new DataContext(ConfigurationManager.ConnectionStrings[_environment].ToString())) {
bool valid = false;
var check = dbC.UserSelectByUsername(userName).ToList();
if (check.Count() > 0) {
return valid;
}
else {
return valid = true;
}
}
}
catch (Exception exc) {
Log.Error("Error in .", exc);
return false;
}
}
我认为,如果定义一个具有有效属性的类,并将其设置为true,则可以正确序列化。我认为您当前的问题是直接返回布尔值,而d是因为它不能作为JSON对象返回true
public class X
{
public bool valid { get; set;}
}
并且做:
public bool CheckUsername(string userName) {
try {
using (var dbC = new DataContext(ConfigurationManager.ConnectionStrings[_environment].ToString())) {
bool valid = false;
var check = dbC.UserSelectByUsername(userName).ToList();
if (check.Count() > 0) {
return new X { valid = valid };
}
else {
return new X { valid = true };
}
}
}
catch (Exception exc) {
Log.Error("Error in .", exc);
return new X { valid = false };
}
}
好吧,既然你对其他答案不太满意,我们破解BootStrapValidator怎么样 好吧,不要再黑了,只是扩展一下 在github第59行附近的以太中,您会发现:
xhr.then(function(response) {
dfd.resolve($field, 'remote', response.valid === true || response.valid === 'true', response.message ? response.message : null);
});
这可以简单地被覆盖/扩展,您必须通过将整个validate方法更改为以下内容来扩展/覆盖整个validate方法:
xhr.then(function(response) {
dfd.resolve($field, 'remote', response.d.valid === true || response.d.valid === 'true', response.d.message ? response.d.message : null);
});
我知道零钱。服务员,我的汤里有一个d
因此,我猜这将实现在包含BootstrapValidator javascript后调用的技巧:
$(document).ready(function () {
$.fn.bootstrapValidator.validators.remote = $.extend({}, $.fn.bootstrapValidator.validators.remote, {
validate: function (validator, $field, options) {
var value = $field.val();
if (value === '') {
return true;
}
var name = $field.attr('data-bv-field'),
data = options.data || {},
url = options.url,
type = options.type || 'POST';
// Support dynamic data
if ('function' === typeof data) {
data = data.call(this, validator);
}
// Support dynamic url
if ('function' === typeof url) {
url = url.call(this, validator);
}
data[options.name || name] = value;
var dfd = new $.Deferred();
var xhr = $.ajax({
type: type,
url: url,
dataType: 'json',
data: data
});
xhr.then(function (response) {
dfd.resolve($field, 'remote', response.d.valid === true || response.d.valid === 'true', response.d.message ? response.d.message : null);
});
dfd.fail(function () {
xhr.abort();
});
return dfd;
}
});
});
必须能够返回您自己定义的JSON。我对web服务了解不多,但也许这会有所帮助。呵呵,阅读这篇文章只会证实d不能被删除。这是我的第一个想法,但我认为d的原因是不同的,我只是找不到我找到d原因的文章或线程。很难用谷歌搜索d;-我尝试了你的解决方案,得到了以下结果:{d:{uuuu类型:AjaxService.X:Webservices.Services,valid:true}}这似乎与bootstrapvalidtor组合使用时不起作用,很遗憾,我猜这个问题没有解决方案。服务员,我的汤里有一个d!d用于返回原语和数组,因为直接返回数组可能会受到影响,但我认为它不会用于类。这就成功了。我不是一个真正的球迷,但现在这是最好的方式去。谢谢!!