Javascript IE8和jQuery—修剪、长度和AJAX的问题

Javascript IE8和jQuery—修剪、长度和AJAX的问题,javascript,jquery,Javascript,Jquery,我的代码如下所示: function loadData() { $.ajax({ url: "", async: true, method: 'post', dataType: "json", data: { start: $('input[name=start]').val(), stop: $('input[name=end]').val(),

我的代码如下所示:

function loadData() {

    $.ajax({
        url: "",
        async: true,
        method: 'post',
        dataType: "json",
        data: {
            start: $('input[name=start]').val(),
            stop: $('input[name=end]').val(),
            week: $('#weekpicker').val(),
            range:$('select[name=date_control]').val(),
            type: 'loaddata'
        },
        beforeSend: function(xhr, opts) {
            if (!$('input[name=start]').val() && !$('input[name=end]').val()) {
                bootbox.alert('Select date first!');
                xhr.abort();
                return false;
            }

        },
        success: function(dane) {
            ustawienia = dane.ustawienia;

            // some code here

        },
        error: function(dane) {
            $('button[name=pokaz]').removeAttr('disabled');
            bootbox.alert(dane.responseText);
        }
    });
}
在FF、Chrome和IE>8上,一切正常,问题在于IE8。 相反,在IE中执行“成功”功能会显示一个错误:

jQuery中的第337行是:

globalEval: function( data ) {
    if ( data && jQuery.trim( data ) ) {
        // We use execScript on Internet Explorer
        // We use an anonymous function so that context is window
        // rather than jQuery in Firefox
        ( window.execScript || function( data ) {
            window[ "eval" ].call( window, data );
        } )( data );
    }
},
所以我删除了
jQuery.trim(数据)

接下来我有一个错误:

//参数仅供内部使用
每个:函数(对象、回调、参数){
var值,
i=0,
length=obj.length,//这是第357行!
isArray=isArraylike(obj);
如果(args){
如果(isArray){
对于(;i

我能做些什么,使其工作?

您正在尝试将长度值指定给变量“length”。据我所知,这是Javascript浏览器中的保留字

将其更改为:

ln = obj.length, //here is line 357!
把你叫“长度”的地方改成“ln”

例如:

 for ( ; i < ln; i++ ) {
(;i{
在IE8上也有同样的问题。可能您的json格式无效。您需要在所有属性周围加引号。官方json应该加引号,但现在新的浏览器不在乎

var json = {
    test: "a",  //wrong
    "test": "a" //correct
}
在服务器端使用此选项:

JavascriptObject translationsObject = new JavascriptObject();
Dictionary<string, string> translations = Translator.GetTranslations(key.LanguageCode);
foreach (var pair in translations)
{
    if (pair.Value != pair.Key)
        translationsObject.Add("\"" + pair.Key + "\"", pair.Value); //Needed for <=IE8
}
string translationsString = "var translations = ";
translationsString += translationsObject.ToString();
translationsString += ";";
return translationsString;
JavascriptObject TranslationObject=新建JavascriptObject();
字典翻译=Translator.GetTranslations(key.LanguageCode);
foreach(翻译中的var对)
{
if(pair.Value!=pair.Key)

translationsObject.Add(“\”“+pair.Key+”\”“,pair.Value);//这些词需要(保留给浏览器)它们实际上不是保留的。它们已经在全局范围内定义了,就是这样。你可以用这个名称自由定义一个局部变量。你有没有遇到过它们中的任何一个问题?我一直在使用
length
parent
、和
open
,没有任何问题。
ln-obj.length,
来自jQuery.when你给一个变量赋值,你不能用单词“length”作为变量名!!!!var ln=obj.length;NOT var length=obj.length;试试看。你要花5秒钟的时间来尝试它。如果它不起作用,请忽略我的answer@user3036342在哪种环境中?我刚刚尝试过:Chrome、FF、IE 11、node.
console.log((function(){var length=100;console.log(长度);返回长度;}())
能否显示原始服务器响应。
方法:'post',
您需要使用
键入:'post'
来指定请求方法。在注释中添加了我使用过的代码。如果没有帮助,那一定是其他问题,但我认为问题应该在这个区域。我应该在哪里粘贴/使用更新的代码?我在服务器上使用PHP。我不是我们json中的所有关键部分都应该变成“myKey”:x。
JavascriptObject translationsObject = new JavascriptObject();
Dictionary<string, string> translations = Translator.GetTranslations(key.LanguageCode);
foreach (var pair in translations)
{
    if (pair.Value != pair.Key)
        translationsObject.Add("\"" + pair.Key + "\"", pair.Value); //Needed for <=IE8
}
string translationsString = "var translations = ";
translationsString += translationsObject.ToString();
translationsString += ";";
return translationsString;