Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: cyberx от 05 Июня 2010, 11:58:27

Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 05 Июня 2010, 11:58:27
Возникла одна проблема. Вот скрипт который делает сортировку у перетаскивание с добавлением в базу, проблема в том что после первого действия скрипт перестаёт работать, после первого запроса уже не отсылается и не работает сортировка, вроде firebug ничего не показал
var dropped = false; var templateHtml; $(document).ready(function(){  function addlist(param)  {    $.ajax({            url: \'index.php\',            data: \'drop=\'+encodeURIComponent(param),            type: \'POST\',            dataType: \'php\',            success: function(msg)             {                     if(parseInt(msg)!=0)               {                $(\'#pageContent\').html(msg);                    }             }       });  }   setSortable();    $("#droppable").droppable({        accept:".drop",        drop:function(event,ui){            dropped = true;            addlist(ui.draggable.text());        }    });   });  function setSortable(){         $("#sortable").sortable({ opacity: 0.6, cursor: \'move\', update: function() {            var order = $(this).sortable("serialize") + \'&action=listing\';            $.post("index.php", order, function(theResponse){                $("#pageContent").html(theResponse);            });                                                                     }                                         });       $("#sortable li").addClass("drop").bind(\'mousedown\',function(){        templateHtml = $("#sortable").html();    }); }

 
  • One
  • Two
  • Three
  • Four
  • Five
  • Six
 
 
 
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 05 Июня 2010, 13:07:21
Уважаемый, если хотите, чтобы Ваш скрипт читали люди, потрудитесь привести его в читаемый вид!
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 05 Июня 2010, 18:23:44
Он та был нормально, просто как сюда забросил редактор его изменил,

Цитировать

var dropped = false;
var templateHtml;
$(document).ready(function(){

function addlist(param)
 {
   $.ajax({
           url: \'index.php\',
           data: \'drop=\'+encodeURIComponent(param),
           type: \'POST\',
           dataType: \'php\',
           success: function(msg)
            {      
             if(parseInt(msg)!=0)
              {
               $(\'#pageContent\').html(msg);    
              }
            }
      });
 }
 
setSortable();
   $("#droppable").droppable({
       accept:".drop",
       drop:function(event,ui){
           dropped = true;
           addlist(ui.draggable.text());
       }
   });
 
});

function setSortable(){

       $("#sortable").sortable({ opacity: 0.6, cursor: \'move\', update: function() {
           var order = $(this).sortable("serialize") + \'&action=listing\';
           $.post("index.php", order, function(theResponse){
               $("#pageContent").html(theResponse);
           });                                                            
       }                                
       });

 
   $("#sortable li").addClass("drop").bind(\'mousedown\',function(){
       templateHtml = $("#sortable").html();
   });
}
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 05 Июня 2010, 23:13:45
Выдаётся ли какая-нибудь ошибка?
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 05 Июня 2010, 23:56:20
Нет просто после первого действия перестаёт работать. После перетаскивания или отсортировки происходит post запрос и после не перетаскивание не происходит и не сортировка
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 06 Июня 2010, 00:35:24
То есть, один раз всё же отрабатывает?
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 06 Июня 2010, 11:07:14
Да один раз работает, проблема появляется после того как происходит отсылка post запроса. Вот например после перебрасывания срабатывает функция
Цитировать

addlist(ui.draggable.text());

Вот она и делает пост запрос
Цитировать

 function addlist(param)
  {
    $.ajax({
           url: \'index.php\',
           data: \'drop=\'+encodeURIComponent(param),
           type: \'POST\',
           dataType: \'php\',
           success: function(msg)
          {      
            if(parseInt(msg)!=0)
             {
              $(\'#pageContent\').html(msg);     
             }
           }
      });
  }

А вот если в ней вместо пост запроса записать просто делать alert то после действия выдает alert и продолжает работать, значит проблема появляется после post запроса
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 06 Июня 2010, 12:46:44
А что запрос возвращает и возвращает ли что-нибудь вообще?
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 06 Июня 2010, 13:03:41
Да после первого действия все возвращает правильно, работает идеально, но после первого перестаёт работать скрипт, не перетаскивает, не перебрасывает и тем более не отсылает
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 06 Июня 2010, 22:47:36
Уточняю: post-запрос что-нибудь возвращает?
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 06 Июня 2010, 23:35:57
После первого да, возвращается все правильно. После ничего не работает, ни перетаскивание и ни пост не отправляется
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 07 Июня 2010, 01:50:42
Понял. Вы полностью подменяете содержимое контейнера, содержащего элементы, которым назначены обработчики событий. Иными словами, после отработки скрипта у Вас появляется совершенно новый набор DOM-элементов, для которых не предусмотрена обработка событий
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 07 Июня 2010, 06:28:05
Не подскажите как собрать скрипт чтоб он работал? Мне очень важно и эта вещь мне тормозит все дело.
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 07 Июня 2010, 11:27:13
Попробуйте после отработки addlist() повторно назначить обработчики событий.
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 07 Июня 2010, 21:37:19
Я не очень разбираюсь в js и не понял как решить эту проблему. Там у меня так
Цитировать





  • One

  • Two

  • Three

  • Four

  • Five

  • Six










if(isset($_POST[\'action\']))
{
echo \'action\';
}
if(isset($_POST[\'drop\']))
{
echo \'drop\';
}
?>



Пост отсылается на #pageContent, если послать на #droppable то работает без проблем, просто дизайн сбывается, не могу понять в чом проблема
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 08 Июня 2010, 01:11:15
Попробуйте заменить соответствующий фрагмент кода:


success: function(msg)
{
if(parseInt(msg)!=0)
{
$(\'#pageContent\').html(msg);
setSortable();
}
}
Без тестирования не уверен, что заработает, но копать куда-то в эту сторону.
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 08 Июня 2010, 06:12:48
Вот после этого происходит такое, после перебрасывания только один раз срабатывает сортировка, до этого вообще один раз срабатывало а щас еще один раз срабатывает сортировка и все
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 08 Июня 2010, 14:09:43
Хм, ошибся фрагментом:
$("#sortable").sortable({ opacity: 0.6, cursor: \'move\', update: function() {
var order = $(this).sortable("serialize") + \'&action=listing\';
$.post("index.php", order, function(theResponse){
$("#pageContent").html(theResponse);
setSortable();
});
}
});
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 08 Июня 2010, 22:13:02
Вот я зарегистрировался на бесплатном хостинге и тут видно что происходит

http://drop.netau.net/index.php

А вот вторая версия, тут я направляю на #droppable и работает, но сбивается дизайн

http://drop.netau.net/index2.php
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 09 Июня 2010, 12:10:18
Так. Во-первых, скрипт, к которому сценарий обращается посредством post-запроса, возвращает целую html-страницу, что само по себе уже противоречит логике сценария.

Сделайте так, чтобы он возвращал только содержимое #pageContent.

Во-вторых, если и после этого работать будет неправильно, обнуляйте содержимое #pageContent перед вставкой туда данных.
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 09 Июня 2010, 22:02:28
Вот именно что я не знаю как это сделать и вот мучаюсь :(
Название: После первого действия скрипт перестает работать
Отправлено: brainkiller от 10 Июня 2010, 19:51:51
Не стоит мучиться! :) Суть проблемы мы вроде разобрали, а что до конкретной реализации, то тут либо читайте мануалы и делайте сами, либо нанимайте специалиста — работа весьма небольшая, много стоить не должна.
Название: После первого действия скрипт перестает работать
Отправлено: cyberx от 10 Июня 2010, 22:00:29
И примерно сколько это стоит? Я вообще без понятий