2015-10-20 5 views
0

У меня есть вызов AJAX для MVC ActionResult в контроллере, который пытается вернуть bool.return bool from Ajax call to MVC

Мой Аякса вызов:

function CheckForExistingTaxId() { 
    $.ajax({ 
     url: "/clients/hasDuplicateTaxId", 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     datatype: "json", 
     data: JSON.stringify({ taxId: taxId }), 
    }); 
} 

Мой метод: ("клиент" является префиксом маршрут по умолчанию)

[HttpGet, Route("hasDuplicateTaxId")] 
    public ActionResult hasDuplicateTaxId(string taxId) 
    { 
     //if stuff 
      return Json(true, JsonRequestBehavior.AllowGet); 
     else 
      return Json(false, JsonRequestBehavior.AllowGet); 
    } 

Я хочу открыть модальный диалог на основе результата вызова Ajax:

if (CheckForExistingTaxId()) 
     DialogOpen(); 

Первая проблема: я получаю 404 Not Found для клиентов/hasDuplicateTaxId. Есть ли проблема с моим маршрутом или тем, как я его называю? Во-вторых, могу ли я возвращать логическое значение таким образом, оценивая функцию CheckForExistingTaxId() с помощью вызова ajax перед открытием диалога?

+0

Ajax рассматривает запрос успешным, если он получить по спине "любые" данные (при этом пустой массив означает, что это удалось) , чтобы проверить, существует ли ваш id, я бы вернул идентификатор, если он был найден. затем в вашем успехе ajax: проверьте, есть ли у ваших данных какие-либо объекты. если это так, значит, оно уже существует. Другой вариант - вернуть ошибку, если идентификатор уже существует, и если он не возвращает пустой json, таким образом вы можете успешно справиться с сценарием «ok»: и сценарий с дублированием по ошибке: Но для ответьте на свой вопрос 404, это звучит для меня так, как будто вы вообще не нажимаете на свой API, можете ли вы поделиться своей настройкой маршрута? – Puzzle84

+0

У всех маршрутов есть «клиенты» в качестве префикса, не знаю, почему я 404'd – noclist

ответ

3

В принципе, если хочет использовать JSON с HttpGet:

[HttpGet, Route("hasDuplicateTaxId")] 
     public ActionResult hasDuplicateTaxId(string taxId) 
     { 
      // if 1 < 2 
      return 1 < 2 ? Json(new { success = true }, JsonRequestBehavior.AllowGet) 
         : Json(new { success = false, ex = "something was invalid" }, JsonRequestBehavior.AllowGet); 
     } 

Аякса:

function CheckForExistingTaxId() { 
    $.ajax({ 
     url: "/clients/hasDuplicateTaxId", 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     datatype: "json", 
     data: JSON.stringify({ taxId: taxId }), 
     success: function (data) { 
      if (data.success) { 
       // server returns true 
      } else { 
       // server returns false 
       alert(data.ex); // alert error message 
      } 
     } 
    }); 
} 
+0

Да, это очень много. вы можете увеличить это, вернув ошибку, если у вас есть дубликат, но это дизайнерское решение, которое вам нужно будет сделать. – Puzzle84

+0

@ Puzzle84 Я просто редактирую свой ответ, это ты имеешь в виду? –

+0

В значительной степени. я имел в виду, что он мог использовать ошибку: вместо проверки успеха и неудачи в успехах, но это работает также. – Puzzle84