Ajax Call не работает с JQuery UI - PullRequest
1 голос
/ 30 мая 2011

С jquery ui Sortable, когда происходит изменение, выполняется функция 'позиции'. В нем есть сообщение ajax, но оно не отправляется при срабатывании позиции:

$('#col').Sortable(
                    {
                        accept: 'widget',
                        opacity: 0.5,
                        helperclass: 'helper',
                        change:  positions,
                        handle: '.widget_title_bar'
                    }
                );

Тем не менее, «позиции» определенно работают, потому что, когда я обычно вызываю их с помощью действия «щелкнуть», сообщение ajax отправляется. Единственное, о чем я могу думать, это то, что позиции написаны в javascript, а не в jquery. Как я могу решить эту проблему?

РЕДАКТИРОВАТЬ Я включил позиции ниже:

function positions(){
    var widgets = '';
    var column = document.getElementById('col');
    for(i = 0; i < col_1.childNodes.length; i++) {
        var str1 = col_1.childNodes[i].className;
        if(str1 && str1.match('widget')) widgets+='&c[1]['+i+']='+col_1.childNodes[i].id;
    }

     xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('POST', '/positions.php', true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("widgetpositions="+widgets);
xmlhttp.send(null);


    return true;
}

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Идентификаторы Javascript чувствительны к регистру, нет функции .Sortable() для jQuery UI, вместо нее используйте .sortable().

$('#col').sortable({
    accept: 'widget',
    opacity: 0.5,
    helperclass: 'helper',
    change:  positions,
    handle: '.widget_title_bar'
});
0 голосов
/ 30 мая 2011

Если предположить, что верхний регистр S в сортируемом является опечаткой при сокращении кода, это работает для меня.
Ошибка должна быть где-то еще, см. Демо: http://jsfiddle.net/doktormolle/xB8Wh/
(Я только заменил «изменить» на «обновление», но он работает и «изменить тоже»)

Единственное отличие, которое вызовет изменение (или любое другое сортируемое событие), это область действия.
Так что если вы используете где-то ключевое слово this внутри функции, это будет #col, если функция была вызвана событием sortable, при вызове ее из события onclick (назначенного inline) этот будет глобальным объектом окна.

Так вы где-нибудь используете этот внутри функции?

...