Я знаю, что название несколько сложное для понимания. Но проблема только в этом. Позвольте мне объяснить вам подробно,
Я делаю, если условие в ajax success, сейчас я даю условие, что если данные не равны undefined, то эти данные хотят существовать.
Но у меня проблема в том, что если данные не равны неопределенным, все равно данные идут в условии if.
Давайте посмотрим код для более ясного
Вот вид
<input type="text" id="Material_PartNo@(i)" data-provide="typeahead" class="typeahead search-query form-control autocomplete" placeholder="PartNo"
onblur="ShowPartNoData(this.value, @(i))" />
<input type="text" class="form-control typeahead search-query autocomplete" id="Material_Description@(i)" data-provide="typeahead"
placeholder="Enter The Product" onblur="ShowProductData(this.value, @(i), Material_PartNo@(i).value)" />
function ShowProductData(Product, id, partno) {
$.ajax({
url: "/ServiceJob/ShowProductData",
method: "POST",
data: { 'product': Product, 'partno': partno },
dataType: "json",
success: function (data) {
if (data.data.name != "undefined");
{
alert(data.data.pid != "undefined");
document.getElementById("Material_PartID" + id).value = data.data.pid,
document.getElementById("Material_PartNo" + id).value = data.data.name,
document.getElementById("Material_Amount" + id).value = data.data.sellprice,
document.getElementById("Material_Qty" + id).value = 1,
document.getElementById("hdn_Material_Amount" + id).value = data.data.sellprice
}
}
});
}
Теперь вот код контроллера
[HttpPost]
public IActionResult ShowProductData(string product, string partno)
{
var productID = _Db.Category.Where(x => x.Name == product).FirstOrDefault();
if (productID != null)
{
if (partno == null)
{
var productDataResult = (from fm in _Db.Purchase
join s in _Db.Part on fm.PartId equals s.Id
where fm.CategoryId == productID.Id //&& s.Name == partno
select new
{
pid = s.Id,
sellprice = fm.sellprice,
Name = s.Name
}).FirstOrDefault();
return Json(new { data = productDataResult });
}
else
{
var productDataResult = (from fm in _Db.Purchase
join s in _Db.Part on fm.PartId equals s.Id
where fm.CategoryId == productID.Id && s.Name == partno
select new
{
pid = s.Id,
sellprice = fm.sellprice,
Name = s.Name
}).FirstOrDefault();
return Json(new { data = productDataResult });
}
}
else
{
return Json(new { data = false });
}
}
теперь, согласно коду, есть два текстовых поля с именем Material_PartNo @ (i) и Material_Description @ (i) . Что бы я ни написал в Material_Description @ (i) , соответствующий продукт будет отображаться в другом текстовом поле с именем Material_PartNo @ (i) . И если нет в наличии какого-либо продукта, Material_PartNo @ (i) должно быть пустым.
Теперь для этого я использую условие if в ajax: если data.data.name не определено (data.data.name - это хранилище значений Material_PartNo @ (i)), то Material_PartNo @ (i) должно быть пустым, иначе покажите их значение.
Но я вижу, что data.data.name не определено (по предупреждению javascript), все еще показывая в нем неопределенное Material_PartNo @ (i) вместо пустого текстового поля.