JQuery проблемы в IE

scorpion-ds

Новичок
JQuery проблемы в IE

С недавних пор стал использовать JQuery для своих проектов, но столкнулся с довольно странной проблемой.

Я реализую отправку форм на Ajax при помощи JQuery, результат отправки данных я возвращаю в json формате, в виде многомерного массива:

Код:
Array
(
    [var3] => Array
        (
            [0] => Неверный формат e-mail 1
        )

    [var9] => Array
        (
            [0] => Обязательное поле (e-mail 2)
        )

    [var10] => Array
        (
            [0] => Обязательное поле (Текстовое поле 10)
        )

    [__ValidForm__] => false
    [__RedirectForm__] => 
)
где var3, var9, var10 поля с ошибками и соответственно у них свой массив с ошибками для данных полей.

Далее полученный массив обрабатывается на JS невалидные поля помечаются, а ниже выводится сообщение об ошибке:
Неверный формат e-mail 1
Обязательное поле (e-mail 2)
Обязательное поле (Текстовое поле 10)
В Опере и ФФ все нормально, а вот в IE получаем такой результат:
Неверный формат e-mail 1
function(value) { for (var i = 0; i < this.length; i++) if (this == value) return i; return -1; }
Обязательное поле (e-mail 2)
function(value) { for (var i = 0; i < this.length; i++) if (this == value) return i; return -1; }
Обязательное поле (Текстовое поле 10)
function(value) { for (var i = 0; i < this.length; i++) if (this == value) return i; return -1; }


Экспериментальным путем было определенно, что лишние элементы массива "function(value) { for (var i = 0; i < this.length; i++) if (this == value) return i; return -1; }" добавляются, только на второй уровень массива.

Также подобная проблема была обнаружена и при использовании модуля "uploadify", в Опере и ФФ все нормально, а вот в IE имеем такую проблему:


причем получаю ее тогда, когда это сообщение вообще не должно выводится (в данном случае такого файла еще нет и он должен просто загрузиться), когда же это сообщение по идеи должно выводится (то есть файл на серваке есть), то выводится нормальное сообщение:


И снова в Опере и ФФ такой проблемы не наблюдается.

Может кто-то сталкивался с этой проблемой и знает от куда берется этот код?
 

Fratyr

Новичок
А можно собственно сам код посмотреть? Запроса и обработки ответа.
 

scorpion-ds

Новичок
Автор оригинала: Fratyr
А можно собственно сам код посмотреть? Запроса и обработки ответа.
Вот код запроса:
Код:
function InitCSForm(f, redirect)	{
	
	
	$("strong[error='true']").remove();
	
	var param = $("form#" + f).serialize();
	param = "inquiry=csform&send=data&" + param;
	
	$("form#" + f + " :input").attr("disabled", "disabled");
	
	jQuery.post("index.php", param, function(data){ ResponseForm(data, f, redirect); }, "json");	
	
}
код обработки ответа:
Код:
function ResponseForm(data, form, redirect)	{
	
	$("form#" + form + " :input").removeAttr("disabled");
	$("form#" + form + " div[panel=\"info\"]").empty();
	
	if(data['__ValidForm__'] == 'false')	{
		
		delete data['__ValidForm__'];
		
		var err_str = "";
		for(var value in data)	{
			
			$("div#" + value + "_label").append('<strong error="true" style="color:red;"> ! </strong>');
			//alert(value);
			for(var err_item in data[value])	{
				err_str = err_str + data[value][err_item] + "<br>";
				//alert(err_item);
			}
			
		}
		//alert(err_str);
		$("form#" + form + " div[panel=\"info\"]").append(err_str);
		
	}
	else	{
		
		if((data['__RedirectForm__'] == '') || (data['__RedirectForm__'] == 'undefined') || (redirect == 0))	{
			$("form#" + form + " div[panel=\"info\"]").append('<span ' + form + '_save="true" style="color:green; font-weight:bold;">Данные сохранены!</span>');
			$("span[" + form + "_save='true']").fadeOut(3000);
		}
		else	{
			$("form#" + form + " div[panel=\"info\"]").append('<span ' + form + '_save="true" style="color:green; font-weight:bold;">Данные сохранены! Перемещение ...</span>');
			$("span[" + form + "_save='true']").fadeOut(3000);
			setTimeout(function() { document.location = data['__RedirectForm__']; }, 3000);
		}
		
	}
	
}
 

newARTix

Новичок
скорее всего ошибка в генерируемом JSON. Интерпретаторы в ФФ и Опере проглатывают, а ИЕ подавился.
Кстати ИЕ не понимает лишних запятых в конце:
['item1','item2',]
{'item1':0,'item2':1,}
так писать низя.
 

scorpion-ds

Новичок
Нашел довольно странное решение проблемы:

Код:
Array
(
    [var3] => Array
        (
            [#0] => Неверный формат e-mail 1
        )

    [var9] => Array
        (
            [#0] => Обязательное поле (e-mail 2)
        )

    [var10] => Array
        (
            [#0] => Обязательное поле (Текстовое поле 10)
        )

    [__ValidForm__] => false
    [__RedirectForm__] => 
)
То есть я второй уровень массива сделал также ассоциативным, добавив к индексам "#", конечно проблема сама по себе осталось, но на данном этапе это можно считать выходом из ситуации.
 
Сверху