JQuery:在drop元素上调用ajax

时间:2011-01-04 10:24:12

标签: jquery-ui jquery

$("div.square").droppable({
        accept: '.white',
        drop: function (event, ui)
        {
            $to = "#" + $(this).attr('id');
            alert(to);
            $.post(
        "/Game/AddMove",
        {
            from: $from,
            to: $to,
            GameID: $("#gameID").val()
        });
        }
    });

嗯,它不起作用。所以我必须要问,是否可以在放弃一些UI元素时调用AJAX?

问题是,它甚至没有调用控制器,

2 个答案:

答案 0 :(得分:1)

我猜你想让你的变量成为被删除元素的id attr。我不知道你打算从哪里获得$来自的价值。

只是旁注 - 我建议不要使用以$开头的变量,特别是不要使用jQuery。

无论如何,要访问丢弃的对象,请执行以下操作:

drop: function(event, ui) {
   toStr = '#' + $(ui.helper).attr('id');
}
  • 换句话说,ui.helper是放在你的droppable上的HTML对象。
祝你好运。

答案 1 :(得分:0)

是的,你可以在drop上触发ajax调用。 (live example)

我看到了几个问题(详情如下):

$("div.square").droppable({
    accept: '.white',
    drop: function (event, ui)
    {
        $to = "#" + $(this).attr('id');// <== 1. Implicit Global?
        alert(to);                     // <== 2. Syntax error
        $.post(
            "/Game/AddMove",
            {
                from: $from,           // <== 3. Where does this come from?
                to: $to,
                GameID: $("#gameID").val()
        });
    }
});
  1. 您似乎在使用$to而未声明它。 (如果它在一个你没有显示的范围内声明,那就没关系;否则,你会成为Horror of Implicit Globals的牺牲品。(但这可能不是让它无法工作的原因。)
  2. 除非在某处定义了to,否则代码应该在这里爆炸。您没有任何名为to的变量。
  3. 您正在使用未在引用代码中定义的变量$from。如果它是在一个封闭的范围内定义的公平'nuff,但如果是这样,可能在问题中值得一提。
  4. 如果以上都不是,那么只需浏览代码即可。现在有很多基于浏览器的调试器。如果您使用Firefox,请安装并使用Firebug。如果您使用Chrome或Safari,则会内置Dev Tools(您可能需要在偏好设置中启用它们)。如果使用IE,IE8及以上版本都有内置调试器;对于IE7及更早版本,您可以使用免费版本的VS.Net。对于Opera,它有一个名为Dragonfly的内置调试器......在所有这些中,您可以在drop处理程序的第一行设置断点,然后逐步查看出现了什么问题。