IE 11 ajax错误 - " SCRIPT65535:参数不是可选的"

时间:2014-10-22 15:15:36

标签: javascript jquery ajax internet-explorer

以下代码适用于IE以外的所有浏览器,并出现错误消息"SCRIPT65535: Argument not optional"

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,Column: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 );
    };

为什么?

3 个答案:

答案 0 :(得分:1)

对于它的价值,在我的情况下,它是'数据'的不正确形成的价值。尝试在调试器中检查dt并确保它是正确的数据类型。

答案 1 :(得分:1)

在ajax中添加以下代码

  , cache: false
  , processData: false  // tell jQuery not to process the data
  , contentType: false  // tell jQuery not to set contentType

再试一次。

$.ajax({

    url: "ajax/data.php",
    cache: false,
    data: dt,
    dataType: "json",
    cache: false,
    processData: false,  // tell jQuery not to process the data
    contentType: false,  // tell jQuery not to set contentType
    success: function(data) {

//一些fcs

答案 2 :(得分:-2)

不确定这是否会有所帮助,而且我知道您已经尝试过$ .getJSON,但也许这会让IE 11更快乐:

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

或者,您可以尝试使用$ .get代替。那是缺少"缓存:false"参数,但我不相信这是件坏事。使用它并不意味着所有浏览器都符合要求。