Перейти к содержимому


Пользователь месяца
TimurR TimurR 1-й за Август
Очков активности: 726 3 темы, 35 сообщений, 11 баллов репутации
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 207 2 темы, 17 сообщений, 6 баллов репутации

  • Фотография Ixman
    #2

    Ixman (o5cat.ru)
    Очков активности: 90 0 тем, 10 сообщений, 6 баллов репутации

  • Фотография WGN
    #3

    WGN (worldgamenews.com)
    Очков активности: 72 Вне конкурса за определение пользователя месяца

  • Фотография magnet
    #4

    magnet (rbfxdirect.com)
    Очков активности: 67.5 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #5

    BLIK
    Очков активности: 33 Вне конкурса за определение пользователя месяца

  • Фотография Developer
    #6

    Developer
    Очков активности: 33 2 темы, 16 сообщений, 1 балл репутации

  • Фотография AnnaYa
    #7

    AnnaYa (topbase.ru)
    Очков активности: 33 2 темы, 5 сообщений, 2 балла репутации

  • Фотография Алексей111
    #8

    Алексей111
    Очков активности: 28.5 5 тем, 4 сообщения, 1 балл репутации

  • Фотография TimurR
    #9

    TimurR
    Очков активности: 27 Вне конкурса за определение пользователя месяца

  • Фотография fedornabilkin
    #10

    fedornabilkin (zaka4ano.ru)
    Очков активности: 24 0 тем, 4 сообщения, 4 балла репутации

  • Показать весь ТОП 10

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 24.09.2018
Топ 5 участников по репутации


  • Закрытая тема Тема закрыта

Ругается при Ajax-запросе.

#1 gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0
0

Отправлено 02 May 2010 - 00:26

У меня есть функция, которая удаляет данные определенной строки таблицы и скрывает эту строку.
Проблема в том, что все работает вроде-бы. Но если привязывать loader этой функцией:

$(function(){
$(".loading").bind("ajaxSend",function(){
$(this).show();
}).bind("ajaxComplete",function(){
$(this).hide();
});
});

то при исполнении функции удаления
function ajax_get_d(form, link, mess, row)
{
var str = $('#'+form).serialize();
$.post("index2.php?"+link, str, function(data){$('#'+mess).html(data);});
document.getElementById(row).style.display = 'none';
}

вот этой ссылкой:
<a href='java script:void(0);' onclick="ajax_get_d('form', 'mod=delete&do=del_polis&id=$id', '', 'pol$id'); return false;">Удалить</a>
иконка Loader появляется, но не исчезает больше, хотя действие и выполнено.
А OPERA выдает вот такую ошибку
Uncaught exception: Syntax error, unrecognized expression: #
Error thrown at line 2904, column 1 in <anonymous function: Sizzle.error>(msg) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
throw "Syntax error, unrecognized expression: " + msg;
called from line 2891, column 4 in <anonymous function: Sizzle.filter>(expr, set, inplace, not) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
Sizzle.error( expr );
called from line 2705, column 3 in <anonymous function>(selector, context, results, seed) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
called from line 3534, column 3 in <anonymous function: Sizzle>(query, context, extra, seed) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
return oldSizzle(query, context, extra, seed);
called from line 3730, column 3 in <anonymous function: find>(selector) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
jQuery.find( selector, this[i], ret );
called from line 161, column 4 in <anonymous function: init>(selector, context) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
return (context || rootjQuery).find( selector );
called from line 21, column 2 in <anonymous function>(selector, context) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
return new jQuery.fn.init( selector, context );
called from line 43, column 91 in <anonymous function>(data) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/index.php?mod=polis:"]http://pacient1/index.php?mod=polis:[/url]
$('#'+mess).html(data);
called from line 5267, column 4 in success() in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
s.success.call( callbackContext, data, status, xhr );
called via Function.prototype.call() from line 5207, column 6 in <anonymous function: xhr.onreadystatechange>(isTimeout) in [url="http://www.masterwebs.ru/go.php?url=http://pacient1/includes/javascript/jquery.js:"]http://pacient1/includes/javascript/jquery.js:[/url]
success();

Использую, естественно jQuery 1.4

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 02 May 2010 - 14:01

gaaarfild,
1) Ты уверен что строка из базу удаляется, а так же ппроверь статус, который возвращает сервер. Скорее всего это не 200 - ОК, возможно у тебя ошибка возникает на стороне сервера. Попробуй вывести с помощью alert, то что приходит от сервера, да и статус не мешало бы. ajaxComplete, вызывется, только при удачном завершении ajax-запроса.
2) Ты не прав в этом куске кода:
function ajax_get_d(form, link, mess, row) 
{
	var str = $('#'+form).serialize();
	$.post("index2.php?"+link, str, function(data){$('#'+mess).html(data);});
	document.getElementById(row).style.display = 'none';
}
У тебя независимо от состояния сервера, которое он вернет, он даже может вернуть ошибку, строка таблицы скроется...
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 03 May 2010 - 01:38

Ну из базы-то он точно удаляет. Это факт. А какая функция возвращает ответ сервера? Или как его проверить.
  • 0

#4 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 03 May 2010 - 07:07

gaaarfild, выведи alert'ом переменную data в функции. Ещё назнач http://api.jquery.com/ajaxError/ для проверки на ошибки
Кстати, ошибка в Opera возникает тут:
function(data){$('#'+mess).html(data);}
Ты вместо mess, передаешь пустую строку, а jQuery сообщает об ошибке селектора $('#')
  • 0

#5 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 03 May 2010 - 22:12

Ну, гипотетически, в данном случае мне ненужно выводить ответ сервера на страницу. Как мне прописать, селектор?
  • 0

#6 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 03 May 2010 - 22:19

gaaarfild, можно оставить третий параметр функции post пустым.
  • 0

#7 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 03 May 2010 - 22:20

Логишно. =)
  • 0

#8 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 03 May 2010 - 23:06

Действительно, проблема была в этом.
Достаточно было заменить эту строчку
function(data){$('#'+mess).html(data);}

на эту

function(data){$(mess).html(data);}

И теперь параметр был пустым. И больше данная ошибка не возникала. И лоудер пропадает.
Огромное спасибо.
  • 0

#9 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 04 May 2010 - 11:56

gaaarfild, всегда пожалуйста. И запомни одна - первая и может даже манусенькая ошибка, может породить что-либо невообразимое.
У тебя jQuery пытался обратиться к несуществующему элементу HTML и занести в него содержимое ответа. Естественно jQuery взбунтовалось, а javascript после первой же синтаксической ошибки пропускает все операторы идущие далее.
  • 0

#10 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 04 May 2010 - 14:20

Принял к сведению. На ошибках учимся. =)
  • 0

robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru