Ajax调用无法使用jquery ui

时间:2011-05-29 20:12:09

标签: jquery ajax jquery-ui jquery-ui-sortable

使用jquery ui Sortable,当发生更改时,将执行函数“position”。它有一个ajax帖子,但是当触发位置时它不会被发送:

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

然而,“位置”肯定有效,因为当我通过onclick动作正常调用时,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 个答案:

答案 0 :(得分:1)

Javascript标识符区分大小写,jQuery UI没有.Sortable()函数,而是使用.sortable()

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

答案 1 :(得分:0)

假设sortable中的大写S在缩短代码时是一个拼写错误,这对我有用 错误必须在其他地方,请参阅演示:http://jsfiddle.net/doktormolle/xB8Wh/
(我只用“更新”替换了“更改”,但它也适用于“更改”)

来自变更(或任何其他可排序事件)的调用的唯一区别是范围 因此,如果您在函数内部使用 this - 关键字,那么如果函数是由sortable-event调用的,那么它将是#col,同时从onclick-event调用它(分配内联)这个将是全局窗口对象。

那么你在函数内使用 this 吗?