我正在使用JQuery Validation插件。我正在使用远程选项拨打我的网络服务来检查公司名称是否存在。 Web服务只接受JSON数据。
我将数据从我的表单中的公司输入字段传递到web服务,如下所示:
数据:“{'company':'”+ $('#Company')。val()+“'}”
但是这总是为公司返回一个空值,因此响应是{'company':''},即正确的JSON但是缺少公司输入字段值。
有人可以解释为什么我总是在这里得到一个空白值?
感谢您的帮助, 夏兰
答案 0 :(得分:5)
原因是
data: "{'company': '" + $('#Company').val() + "'}"
在页面加载时不进行远程调用时进行评估。
尝试以这种方式声明规则:
remote: function() {
var r = {
url: "webservice.asmx",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{'company': '" + $('#Company').val() + "'}"
dataFilter: function(data) { return (JSON.parse(data)).d; }
}
return r;
}
如果您使用的是ASP.Net webservice,则需要使用dataFilter,因为响应将位于json对象的“d”属性中。需要JSON库。
"{ d: "true" }"
答案 1 :(得分:0)
试试这个:
data: {
company: $('#Company').val(),
param: 1 //Second paramenter
//you can keep adding parameters folloiwng the format
}
答案 2 :(得分:0)
尝试一下:
var query = [
{ "$lookup": {
from: 'order_details',
let: { order_id: "$_id" },
pipeline: [
{ $match: { $expr: { $and: [{ $eq: [ "$order_id", "$$order_id" ] }, { $eq: [ "$seller_id", ObjectID(seller_id) ] }] } } },
{ $project: {
amount: 1,
cod_charge: 1,
shipping_charge: 1,
pid: 1,
product_attribute_id: 1,
qty: 1
} },
{ "$lookup": {
from: 'product',
let: { product_id: "$pid", product_attribute_id: '$product_attribute_id'},
pipeline: [
{ $match: { $expr: { $eq: [ "$_id", "$$product_id" ] } } },
{ $project: { _id: 1, name: 1, sku: 1 } },
{ "$lookup": {
from: 'product_image',
let: { product_attribute_id: '$$product_attribute_id' },
pipeline: [
{ $match: { $expr: { $eq: [ "$product_attribute_id", "$$product_attribute_id" ] } } },
{ $project: { _id: 0, image: 1, is_default: 1 } },
{ $sort : { is_default: -1 } },
{ $replaceRoot: { newRoot: {_id: "$_id", image: "$image" } } }
],
as: 'product_image'
} },
{ $replaceRoot: { newRoot: {
_id: "$_id",
name: "$name",
sku: "$sku",
image: { $arrayElemAt: [ "$product_image.image", 0 ] }
} } }
],
as: 'product'
} },
{ "$replaceRoot": { newRoot: {
_id: '$$ROOT._id',
pid: '$$ROOT.pid',
amount: '$$ROOT.amount',
cod_charge: '$$ROOT.cod_charge',
shipping_charge: '$$ROOT.shipping_charge',
product_attribute_id: "$$ROOT.product_attribute_id",
qty: "$$ROOT.qty",
product: { $arrayElemAt: [ "$product", 0 ] },
} } },
],
as: 'order_details'
} },
{ "$replaceRoot": {
newRoot: {
_id: "$_id",
order_no: "$order_no",
cust_id: "$cust_id",
order_date: "$order_date",
order_details: "$order_details"
}
} }
]
orderModel.order.aggregate(query, function(err, orderData){})
或更好的方法:
data: function() { return "{'company': '" + $('#Company').val() + "'}"; }
这对我有用