Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не вызывается callback у post в IE (https://javascript.ru/forum/jquery/1849-ne-vyzyvaetsya-callback-u-post-v-ie.html)

maxtor 24.09.2008 19:46

Не вызывается callback у post в IE
 
Код:

<?
        if ($_GET['act'] == 'test') {
                print(rand());
        } else {
?>
<script language="javascript" type="text/javascript" src="js/jquery.js"></script>
<div id="captcha_container">тут будет каптча<div>
<script type="text/javascript">
$(document).ready(function() {
        $("#captcha_container").click(function() {
                $.post(
                        'test.php?act=test',
                        function (data){
                                $("#captcha_container").html(data);
                        }
                );
        });
});
</script>
<? } ?>

Проблема в том, что не вызывается колбэк в Internet Explorer. Сам запрос выполняется, но данные в функцию не передаются. Проблема только в IE.
Еще один важный факт! На серверах с вебсервером Апач в IE все работало, но у меня nginx, в нем не работает... Кто нибудь сталкивался с данной проблемой? В какую сторону копать?

Андрей Параничев 24.09.2008 20:22

Может проблема в исходящих заголовках с сервера? Данные в JSON, или XML?

maxtor 24.09.2008 20:42

XML

Octane 24.09.2008 20:46

А зачем Вы в URL передаете параметр «act», если используете метод «post». Для передачи данных на сервер методом пост в «XMLHttpRequest» есть метод «send», поэтому передаваемые параметры нужно записать отдельно:
$.post('test.php',
  {act: 'test'},
  function (data){
    $("#captcha_container").html(data);
  });

Андрей Параничев 24.09.2008 21:16

maxtor,
А заголовки ответа XML с сервера правильные?

maxtor 25.09.2008 04:45

Octane, это просто упрощенный пример, реальный код другой, этот набросал для наглядности, ни этот, ни так как вы сказали, не работает.
Андрей Параничев, какие должны быть?

Андрей Параничев 25.09.2008 16:07

maxtor,
Как минимум:
Content-Type: text/xml

maxtor 26.09.2008 18:19

Андрей Параничев, поставил
header("Content-Type: text/xml");
Везде, даже в FF перестало работать...

maxtor 26.09.2008 18:25

Вот скриптик: http://katushka.net/test.php
посмотрите, что не так?

Андрей Параничев 26.09.2008 19:42

У вас ответ с сервера - это же страница? Непонятно. Должен быть либо XML, либо JSON.

maxtor 27.09.2008 11:12

Андрей Параничев, ну я так понимаю, нужно ставить: header("Content-Type: text/xml"); ? Но тогда ни в одном браузере не работает...почему?
И почему на одних серверах скрипт написанный в первом сообщении работает, а на некоторых нет?

Андрей Параничев 27.09.2008 16:47

Какие данные возвращает страница, когда её запрашивают с переменной act=test?

maxtor 28.09.2008 09:29

Андрей Параничев, как я уже и писал. в IE ничего не возвращает

Viper 30.09.2008 00:23

maxtor как-то странно вы передаете данные через запрос, а тем более получаете.

$.post('test.php', {act: "test"}, function(result){
$("#captcha_container").empty();
$("#captcha_container").append(result);
}

попробуйте так.

maxtor 30.09.2008 04:32

Viper, что странного? И какая разница каким образом получаю данные, коллбэк в обще не вызывается, хоть alert(1) в function(result) {} засунуть...

Octane 30.09.2008 11:39

Callback функция срабатывает, если данные с сервера успешно пришли. Для действий в случае возникновения ошибки в jQuery предусмотрены специальные методы.

maxtor 04.10.2008 13:18

Viper, без результатно...
Кто нибудь скажет, в чем косяк то?

Андрей Параничев 04.10.2008 14:52

$.post('test.php',
  {act: 'test'},
  function (data){
    $("#captcha_container").html(data);
  }, 'html');

?

Косяк в том, что у вас с сервера приходит эта же страница, в качестве ответа. А не какой-нибудь xml, или JSON.

Korvin 06.10.2008 12:44

Та же проблема
 
Никакие заголовки и формат возращаемых данных тут ни причем.
Тоже замечу, что на сервере Apach в IE все работает прекрасно.
У меня возникает такая же проблема, при этом в строке статуса появляется ошибка JS "невозможно создание объекта сервером программирования объектов", но сообщения никакого не выскакивает. Это ошибка возникает из-за параметров безопасности IE. Необходимо разрешить выполнение элементов ActiveX, тогда все заработает.Но это, конечно, не решение проблемы. Maxtor, если найдешь решение, напиши в qip - 440-518-081

Snipe 06.10.2008 14:51

М.б. не в тему, но когда xml шлется в iframe в IE6-7, то IE его пытается разобрать самостоятельно своими стилями (хотя IE об этом никто не просит), а не передать скрипту по факту. Поэтому в XML надо прописать путь к файлу со стилями и сделать сам пустой файл стилей (хотя в самом файле желательно написать хотя бы строчку с комментарием).

Библиотеками стараюсь не пользоваться, поэтому в этом причина или нет - не знаю.

maxtor 07.10.2008 19:24

Snipe, увы, не помогло :(
Заметил, что сервер отдает ошибку: 411 Length Required

maxtor 07.10.2008 19:43

Перепробовал все бразуеры и серверы (Апач, nginx, лайти), проблема только в одном случае - nginx+IE.
Но вот как это дело заставить работать, вобще не представляю...

maxtor 08.10.2008 19:07

В конфиге nginx:
charset utf-8;
и всё заработало!

fc0 15.11.2008 22:05

ie как всегда "радует", была такаяже проблема с Apache Tomcat.
заменил заголовок
Content-Type: text/html;charset=Cp1251
на
Content-Type: text/html
все заработало

JROMEO 25.01.2009 13:57

:) проблему решил
там где вызываете пост нада поставить:
$.ajaxSetup({
scriptCharset: "utf-8" ,
contentType: "application/txt; charset=utf-8"
});

ну а в файлике который вызывается

header("Content-type: text/html; charset=utf-8");

вот )) если че не выходит, mp3vkontakte@ukr.net помогу.

ps. А кстати, если ищете песенки, милости проси на http://mp3vkontakte.org.ua :cool:
---------


Часовой пояс GMT +3, время: 19:33.