2013-11-13 2 views
-1

The error in the title of the post came from jQuery version 1.10.2, line 637 У меня есть модальный, который появляется на кнопке с помощью нескольких текстовых полей, и когда нажата кнопка внутри модала, информация, которая находится в текстовых полях, добавлен в базу данных через AJAX. Чтобы сделать страницу более удобной для пользователя, я добавил функцию setTimeout, чтобы приостановить скрытие модальности, чтобы пользователь мог видеть сообщение подтверждения, что данные были добавлены в базу данных. Блок 1 моего кода добавляет запись в базу данных, но вызов SetTimeout не работает правильно:Функция.prototype.apply: список аргументов имеет неправильный тип

function insert(data) { 
       data = JSON.stringify(data); 
       $.ajax({ 
        type: "POST", 
        url: "../Service.asmx/InsertPerson", 
        dataType: "json", 
        contentType: "application/json", 
        data: data, 
        //record gets added to the database 
        //something about the setTimeout function 
        //that gives the error in the title 
        success: function() { 
         console.log('success before setTimeout'); 
         var successMessage = $('<div>').text('Successfully added to the database...').css('color', 'green'); 
         $('.modal-body').append(successMessage); 
         //*******this function doesn't run 
         window.setTimeout(function() { 
          $('#contact').modal('hide'); 
          $('.modal-body input').each(function() { 
           $(this).val(''); 
          }, 1000); 
         }); 
        } 
       }); 
      } 

Я установил его с помощью кода: (функция успеха, что нам нужно обратить внимание здесь)

function insert(data) { 
       data = JSON.stringify(data); 
       $.ajax({ 
        type: "POST", 
        url: "../Service.asmx/InsertPerson", 
        dataType: "json", 
        contentType: "application/json", 
        data: data, 
        //record gets added to the database 
        success: function() { 
         console.log('success before setTimeout'); 
         var successMessage = $('<div>').text('Successfully added to the database...').css('color', 'green'); 
         $('.modal-body').append(successMessage); 
         window.setTimeout(function() { 
          $('.modal-body input').each(function() { 
           $(this).val(''); 
          }); 
          $('#contact').modal('hide'); 
         }, 1000); 

        } 
       }); 
      } 

я вижу, что в первом блоке я не закрывал функцию each, и я установил, что во втором блоке, и именно поэтому она работает, но в будущем, что делает эта ошибка действительно MEAN в данном контексте?

+1

Я не вижу '.apply' в любом месте вашего кода. – Halcyon

+0

@FritsvanCampen, эта ошибка возникла из jQuery. – wootscootinboogie

+0

@FritsvanCampen в версии 1.10.2 jQuery в строке 637 – wootscootinboogie

ответ

2

Это означает, что вы оставили второй аргумент setTimeout и вместо этого передали его как второй аргумент .each().

редактировать — это выглядит как JQuery набирает аргумент (что 1000) и пытается передать его через его внутреннюю each реализации. Функция .apply() ожидает, что она будет массивом.

+0

Спасибо, должен был упомянуть, что ошибка исходила от jQuery. – wootscootinboogie

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