Ajax вызов в ASP MVC не работает
Всем привет,
Я планирую получить идентификатор клиента из БД, передав имя клиента контроллеру с помощью Ajax. И назначьте CustomerId, чтобы сохранить их в БД с другим сообщением Ajax.
но это предупреждает об ошибке. Я не мог отладить. пожалуйста, помогите мне решить эту проблему.
//Save if valid if (isAllValid) { $(function () { $.ajax({ url: '/Sale/getCustomerId', type: "POST", data: { input: $("[id*='Customer'] :selected").text() }, contentType: "application/json", success: function (result) { alert(result); }, error: function () { alert("error"); } }); return false; }); cusId = result; var data = { AccntInvoiceNo: $('#AccountInvNo').val(), SaleDate: $('#SaleDate').val(), SubTotal: $('#SubTotal').val(), Discount: $('#Discount').val(), NetAmount: $('#NetTotal').val(), CustomerId: result, UserId: 1, SaleType: $("[id*='Categories'] :selected").text(), SaleDescs: orderItems } $(this).val('Please wait...'); $.ajax({ url: '/Sale/SaveOrder', type: "POST", data: JSON.stringify(data), dataType: "JSON", contentType: "application/json", success: function (d) { //check is successfully save to database if (d.status == true) { //will send status from server side alert('Successfully done.'); //clear form orderItems = []; $('#AccountInvNo').val(''); $('#saleDate').val(''); $('#orderItems').empty(); $('#SubTotal').val(''); $('#Discount').val(''); $('#NetTotal').val(''); } else { alert('Failed'); } $('#submit').val('Save'); }, error: function (exception) { alert('Exeption:' + exception); $('#submit').val('Save'); } }); } });
Класс контроллера продаж
public JsonResult getCustomerId(string CusName) { IQueryable CusID = from p in db.Persons where ((p.FName+p.LName) == CusName) select p.Id; return Json(CusID, JsonRequestBehavior.AllowGet ); }
Файл конфигурации маршрута (people - это имя таблицы)
routes.MapRoute( "getCustomerId", "Sale/People/{name}", new { controller = "Sale", action = "getCustomerId" } );
Что я уже пробовал:
Я планирую получить идентификатор клиента из БД, передав имя клиента контроллеру с помощью Ajax. И назначьте CustomerId, чтобы сохранить их в БД с другим сообщением Ajax.
но это предупреждает об ошибке. Я не мог отладить. пожалуйста, помогите мне решить эту проблему.
InbarBarkai
В чем же ошибка?
Member 11883599
/Sale/getCustomerId от этого я не получаю значения, он выдает ошибку и показывает, что результат не определен
InbarBarkai
Вам не хватает элементарного понимания вызовов ajax.
Конечно, результат будет неопределенным. Вы не получите его, пока звонок не будет закончен. Это делается асинхронно.
Karthik_Mahalingam
попадает ли он в действие контроллера?
Member 11883599
Я проверил, поставив точку останова на контроллер, но она не попала, догадываетесь ?? Потому что я новичок в этом Аяксе
Karthik_Mahalingam
вставьте url-адрес в адресную строку и убедитесь, что он попал в действие
Member 11883599
да, я пробовал этот путь,
http://localhost:55664/Sale/getCustomerId?CusName=Kasun%20Sandaruwan
как только я удаляю тег [HttpPost], он попадает в контроллер, и значение CusName успешно проходит, но для CusId я получаю длинный запрос. не удостоверение. Но я уже проверил quering samething на SQLSever, он дает правильное значение.
Karthik_Mahalingam
затем удалите httpost
Karthik_Mahalingam
запустите этот текст в окне консоли chrome и проверьте значение
$("[id*= 'Customer']: selected"). text()
Member 11883599
Я тоже пробовал ваш путь, он дает эту ошибку
VM94:187 Uncaught DOMException: не удалось выполнить 'querySelector' на 'Document': '[id*= 'Customer']: selected' не является допустимым селектором.(...) CommandLineAPIImpl.$ @ VM94:187 (анонимная функция) @ VM121:1
Karthik_Mahalingam
означает, что селектор недействителен
проверка http://www.w3schools.com/jquery/jquery_ref_selectors.asp
Member 11883599
Я снова изменил код,
все выглядит нормально, но не получил значения от контроллера к вызову ajax, отдаю как неопределенное. Я только что попытался вернуть номер из контроллера в ajax-вызов, но все равно получает значение данных неопределенное. пожалуйста, попробуйте решить эту проблему,
Контроллер......
[HttpPost]
public JsonResult getCustomerId(string CusName)
{
результат ВАР = дБ.Люди.Где (x => x.FName == CusName).Выберите (x => x.Id).Distinct ().Вызова метода toList().Метода firstordefault();
return Json (результат);
}
Функция Ajax.....
функция getCusId(имя) {
$.Аякс({
url: '/ Sale/getCustomerId',
тип данных: "json",
тип: "пост",
contentType: 'application/json; charset=utf-8',
сведения: в формате JSON.преобразовать в строки({ CusName: имя }),
асинхронные: правда,
processData: false,
кэш: false,
успех: функция (данные) {
возвращать данные;
},
ошибка: функция (xhr) {
// alert ("ошибка");
возвращать null;
},
ошибка: функция (исключение) {
предупреждение('исключения:' + исключения);
}
})
}
улавливание возвращаемого значения....
var cusid = getCusId(имя);