2013-12-20 3 views
1

Когда я использую запрос AJAX, который отправляет данные контроллеру с IE, он отправляет нулевые данные. Когда я использую Chrome или Firefox, мои данные из пар ключ/значение находятся в переменных параметра контроллера.AJAX Отправка нулевых данных при использовании IE

Вот мой Javascript функция:

$(".input-group.date").datepicker({ 
     autoclose: true 
    }).on('changeDate', function (ev) { 


     var schoolId = $(this).attr('data-schoolId'); 
     var date = new Date(ev.date).toUTCString(); 
     var schoolName = $(this).attr('data-schoolName'); 

     $.ajax({ 
      url: "@Url.Action("ChangeFulfillmentDate", "Admin")", 
      type: "POST", 
      data: { 
       'newDate': date, 
       'schoolId': schoolId 
      }, 
      success: function (data) { 
       if (!data.success) { 
        var n = noty({ 
         text: 'Hold up! Something went wrong...<br />' + data.message, 
         layout: 'top', 
         type: 'error', 
         killer: true, 
         closeWith: ['button'] 
        }); 
       } 
       else { 
        var n = noty({ 
         text: 'Fulfillment date for ' + schoolName + ' updated successfully', 
         layout: 'bottomRight', 
         type: 'success', 
         timeout: 3000, 
         killer: true, 
         closeWith: ['hover'] 
        }); 
       } 
      }, 
      error: function (xhr, status, error) { 
       var n = noty({ 
        text: 'Hold up! Something went wrong...<br />' + xhr.responseText, 
        layout: 'top', 
        type: 'error', 
        killer: true, 
        closeWith: ['button'] 
       }); 
      } 
     }); 
    }); 

Ошибка ответа Ajax я получаю: имя

The parameters dictionary contains a null entry for parameter 'newDate' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.JsonResult ChangeFulfillmentDate(System.DateTime, Int32)' in 'CurrReplenishment.Controllers.AdminController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. 

Параметр: Параметры

Почему мой AJAX вызов не посылая соответствующие значения для пар ключ/значение? Я убедился, что есть данные в этих переменных javascript, так как они работают в Chrome и Firefox.

+0

отлаживать эту строку в IE. 'var date = new Date (ev.date) .toUTCString();' ваша проблема, вероятно, не имеет никакого отношения к ajax. Скорее всего, IE не распознает 'ev.date' как строку даты. –

+0

Я не думаю, что все. Переменная 'date' заполняется данными, которые выглядят так: «Tue, 17 Jun 2014 00:00:00 UTC». –

ответ

1

Как уже отмечалось ранее, ваша проблема связана с датой. JSon очень странно относится к датам и не позволит вам отправлять его, когда вы регулярно отправляете данные. Для того, чтобы заставить его работать, вам нужно сделать что-то вроде этого:

var mydate= dateFormat(yourdate, "mm/dd/yyyy HH:MM:ss");

Вы можете прочитать больше об этом here (староват, но эй, это работает)

+0

Это работает. Спасибо за вашу помощь. Я очень ценю ссылку на объяснение, почему это происходит, а не просто рассказывать мне, как это исправить. –

+0

Я рад, что вы получили его на работу :) – Jose

+0

Это была не самая интуитивная ошибка. Я видел, как AJAX отправляет нулевые данные, если раньше вы создавали пару ключа/значения данных, и это то, что я думал, что это происходит, поскольку моя «дата» имела в ней данные. Я бы никогда не догадался, что данные в переменной «date» недействительны. –

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