Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jQuery.ajax и IE, В мозилле и опере прекрасно работает 
:(
    Опции темы
genixxx
Дата 22.12.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



Коллеги, прошу помощи, весь уже извелся, ничего не помогает! Написал на jQuery в соответствии со всеми доками простейший скрипт отправки формы и обработки полученного ответа. Если ответ wrongcode, предлагается повторить ввод каптчи, иначе идет доабвление отправленного комментария на страницу методом .append().

Исходный код таков:
Код

<script type="text/javascript" src="/js/jquery-1.3.2.js"></script> 
  <script>
  $(document).ready(function(){

    $("a.commenthref").click(function () {
        if ( $("#commentform").is(":hidden") )
            $("#commentform").slideDown("slow");
        else
            $("#commentform").slideUp("slow");
        return false;
     });

    function retrieve (data){
        if(data == "wrongcode") {
            alert("Неправильно введен проверочный код, попробуйте еще раз");
            document.getElementById('kcaptcha').src="/kcaptcha/index.php?rnd="+Math.random();
            $("#addbutton").val("Добавить комментарий").removeAttr("disabled");
            return false;
            }
        else {
            $("#comments").append(data);
            $("#addcomment input").val("");
            $("textarea").val("");
            $("#commentform").slideUp("slow");
            document.getElementById('kcaptcha').src="/kcaptcha/index.php?rnd="+Math.random();
            $("#addbutton").val("Добавить комментарий").removeAttr("disabled");
            }
        }

    $("form#addcomment").submit(function() {
        $.ajax({error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Error AJAX: " + textStatus + ", " + errorThrown);
            }
            });
        var comname = $("#comname").val();
        var comtext =  $("#comtext").val();
        var comkey = $("#comkey").val();       

        if (comname != "" && comtext != "" && comkey != "") {
            $("#addbutton").val("Отправляем...").attr("disabled","disabled");
                        
            if ($.browser.msie) {
                $.get("/comment/comment.php", {pid: "3162", ptype: "article", name: comname, text: comtext, keystring: comkey});
                $("#resultcomment").load("/temp/cache/addcommentresult.txt");
                }
            else {
                $.post("/comment/comment.php", { pid: "3162", ptype: "article", name: comname, text: comtext, keystring: comkey }, retrieve);
                }
    

/*
            //$.ajax({
            //    url: "/comment/comment.php",
            //    type: "POST",
            //    dataType : "json",   
            //    data: { 
            //        pid: "3162", 
            //        ptype: "article", 
            //        name: comname, 
            //        text: comtext, 
            //        keystring: comkey 
            //        }, 
            //    success: function(data) {
            //        alert(data)
            //        },
            //    error: function(XMLHttpRequest, textStatus, errorThrown) {
            //        alert("Error AJAX: " + textStatus + ", " + errorThrown);
            //     }
            //    });
 */          
            }
       return false;
     });

  });
  </script>


<div id="resultcomment"></div>

<div style="display:block;padding:10px 10px 0 20px"><a href='#' class='commenthref'><img src="/images/addcomment.jpg" border="0" alt="Добавить комментарий"/></a></div>
<div class='comment' style="border:none; display:none" id="commentform"><p>
<table width='400px'><tr>
    <form name='addcomment' id='addcomment' action='/comment/comment.php' method='POST'>
    <input type='hidden' name='pid' value='3162' />
    <input type='hidden' name='ptype' value='article' />
    <td width='200px' nowrap>Ваше имя: </td>
    <td><input type='text' name='name' id='comname' value='' style="width:100%" /></td>
<tr>
    <td colspan="2">

        <textarea name='text' id='comtext' rows='4' cols='20' style='width:100%'></textarea><br>
    </td>
</tr><tr>
    <td nowrap>Код с картинки: <input type=text name='keystring' id='comkey' value='' size='8'></td>
    <td align="right"><img id="kcaptcha" src="/kcaptcha/index.php?PHPSESSID=a1b5ed2e85576bfb6f6303c90622e218"></td>
</tr><tr><td colspan="2"><input type='submit' style='width:100%' id='addbutton' value='Добавить комментарий' /></td></tr>        </form>


Как видите, я испробовал все. Если слишком непонятно читать весь код, вот главный вызов функции post, который то и выдает ошибку в IE:
Код

$.post("/comment/comment.php", { pid: "3162", ptype: "article", name: comname, text: comtext, keystring: comkey }, retrieve);


Подскажите пожалуйста, как быть? 
PM MAIL   Вверх
IDVsbruck
Дата 24.12.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



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

$.post("/comment/comment.php", { pid: "3162", ptype: "article", name: comname, text: comtext, keystring: comkey }, function(data){retrieve(data)});

- $(document).ready(function(){...} или он же body.onload служит для того, чтобы выполнить какие-то действия по окончании загрузки страницы, но это не значит, что надо в него вставлять обработчики всех элементов и статические функции; по коду он тебе и вовсе тут не нужен, все вынеси просто в скрипт.

Это сообщение отредактировал(а) IDVsbruck - 24.12.2009, 11:51
PM MAIL   Вверх
genixxx
Дата 24.12.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.10.2009

Репутация: нет
Всего: нет



Спасибо за ответ, но проблема была в том, что IE не воспринимает кодировку в виде cp1251, ему требуется только явное указание кодировки windows-1251 для тех файлов, в которые отправляется запрос
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.