2015-02-02 4 views
0

У меня есть 1 вид на каждую страницу, и я успешно тестирование этого кода на несколько раз, но теперь по какой-то причине, я получаю эту ошибку:неопределенный не является функция во время AJAX поста

undefined is not a function

Это сообщения мои формы значения из моего MVC View к контроллеру и если была ошибка при обработке

$("form").submit(function() { 
     $.post($(this).attr("action"), $(this).serialize(), function (data) { 
      if (!data.IsOK) { 
       $("#modalTitle").html(data.Title); 
       $("#modalMessage").html(data.Message); 
       $("#modalDetail").html(data.Error).hide(); // error occurs here 
       $("#modalDialog").css("display", "block"); 
       $("#modalBackground").css("display", "block"); 
      } 
      else { 
       window.location.href = '@Url.Content("~/")'; 
      } 
      return; 
     }); 

     return false; 
    }); 

идея заключается в том, чтобы создать модальное диалоговое окно, которое говорит пользователю «что-то пошло не так» и предоставить информацию, которая может быть использована для отслеживания проблема. Однако во многих случаях пользователь не сможет увидеть div #modalDetail, потому что он будет содержать трассировку стека (data.Error), которую должны видеть только пользователи sysadmin.

У меня такое чувство, что эта ошибка происходит, если data.Error пуст, но мне кажется, что html для этого div будет установлен только на пустую строку или эквивалент.

+1

Попробуйте 'console.log (data)', чтобы убедиться, что все переменные установлены. – Eric

+0

'if (! Data.IsOK) {' кажется странным. Я думаю, вы хотите заполнить данные **, если ** 'data.IsOK' истинно, а не false? С 'if (! Data.IsOK) {' вы уверены, что 'data.Title' и т. Д. Не определено. – davidkonrad

+0

Похоже, что 'data.Error' не может быть определен. Также выполнение '.hide()' не мешает пользователю видеть его. Они могут просто взглянуть на простой HTML, поэтому, если это действительно личная информация, которую пользователь не должен видеть. Даже не верьте этому значению, это не системный администратор. Хотя я предполагаю, что сообщение об ошибке не слишком важно. –

ответ

0

Вы будете работать в эту ошибку, если data.Error = undefined

Таким образом, чтобы избежать этого, сделать это

$("#modalDetail").html(data.Error === undefined ? "" : data.Error).hide();

Это просто проверка, если Error неопределен и добавление пустую строку, если она есть.

Смежные вопросы