2014-10-22 2 views
1

Код ниже работает в каждом браузере, кроме IE, после сообщения об ошибке "SCRIPT65535: Argument not optional".IE 11 ошибка ajax - «SCRIPT65535: аргумент не является обязательным»

function _getChart(){ 

    $('.series-data').remove(); 

    var itm = window.item; 
    var tp = window.type; 
    var ord = window.order; 
    var xd = window.xdata; 
    var yd = window.ydata; 

    var dt = {superAwesomeTypeNotIEvar : tp, 
       superAwesomeItemNotIEvar : itm, 
       superAwesomeOrderNotIEvar : ord, 
       superAwesomeXdataNotIEvar : xd, 
       superAwesomeYdataNotIEvar : yd, 
       superAwesomeCharHeightNotIEvar : $('.charts-wrapper').height()}; 

    $.ajax({ 

     url: "ajax/data.php", 
     cache: false, 
     data: dt, 
     dataType: "json", 
     success: function(data) { 
      // Some fcs 

Как вы можете видеть, что я уже пытался переименовать все параметры, то, что IE не вероятно, используя для себя (например историю removeFilter).

Это то, что функция выглядела первоначально

function _getChart(){ 

    $('.series-data').remove(); 

    $.getJSON('ajax/data.php', { 
     type : window.type, 
     item : window.item, 
     order: window.order, 
     xdata : window.kurtosis, 
     ydata : window.range, 
     chartHeight : $('.charts-wrapper').height()}, function(data) { 

Если я устанавливаю dt массив просто {} все это работает, в противном случае сообщение об ошибке выше показано.

SCRIPT65535: Аргумент не optionalFile: jquery.js, Line: 4, колонка: 13144

Jquery не-минутная линия файла, где появляется ошибка

jQuery.param = function(a, traditional) { 
    var prefix, 
    s = [], 
    add = function(key, value) { 
     // If value is a function, invoke it and return its value 
     value = jQuery.isFunction(value) ? value() : (value == null ? "" : value); 
     s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value); 
    }; 

Почему?

+1

Как называется эта функция? Является ли это загрузкой документа или элементом? – jiy

+1

Вы пробовали это без dataType: "json" line? Ожидаете ли вы, что полученные данные будут в формате JSON? – jiy

+0

Эй, как нагрузка, так и на элемент кликают и оба терпят неудачу. Да, изначально функция была $ .getJSON и да, я ожидаю результат json_encode(). – Foxhoundn

ответ

-2

Не уверен, если это поможет, и я знаю, что вы уже пробовали $ .getJSON, но, возможно, это сделает IE 11 счастливее:

$.post('ajax/data.php', dt, function(data) { 
    // do something with data 
},'json'); 

Кроме того, вы можете попробовать использовать $ .get вместо этого. Отсутствует параметр «cache: false», но я не считаю, что это плохо. Использование этого не означает, что все браузеры будут соответствовать.

+1

Почему переход от GET to POST был ответом здесь? –

+0

Это не так, за исключением, возможно, того, что серверный код ожидает того или другого. – jiy

+2

@jiy Здесь неактивен код сервера. Ошибка происходит до того, как сервер достигнут. –

1

Для чего это стоит, в моем случае это было неправильно сформированное значение для «данных». Попробуйте проверить dt в отладчике и убедиться, что это правильный тип данных.

+0

Проблема была в том, что window.item является зарезервированной переменной IE :) – Foxhoundn

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