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;