事件功能内部的Ajax调用

时间:2019-03-14 08:23:08

标签: javascript jquery ajax

我一直在尝试在事件处理函数中执行AJAX调用大约一天,尝试了许多when()then()done()的东西,还设置了{{ 1}},但我仍然遇到未定义的错误。我的代码如下:

async: false

我需要将事件对象传递给create.php来做一些服务器端的工作。由于$('#id').on('itemMoved', function (event) { console.log(event); $.ajax({ type: "POST", url: "create.php", data: event }); }); 正确地打印了对象,我想原因是ajax的异步行为-但仍然不知道如何解决它。

编辑:首先,对不起,请务必完成。知识的缺乏使决定什么是相关的变得更加困难。

console.log(event)是jQuery UI Widget jxqkanban的事件。拖动看板项目并保存有关新旧列和项目数据(Documentation)的信息时,将触发该事件。我认为AJAX在对象内容完全解决之前就在运行,导致

itemMoved

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

在这里一直在玩js小提琴链接。

https://jsfiddle.net/WillCodeForBeer/29kqpo58/1/

$("#click").click(function(event){    
   console.log(event)    
   data = {};    
   data.timestamp = event.timeStamp
   $.post('/echo/js/?js=hello%20world!', { data : data } );
});

我不确定您遇到什么错误,但是当我尝试仅发送事件数据时,我遇到了类型错误。经过一番阅读,事实证明您无法将事件对象发送为  它包含HTML,因为它将引用事件目标。

我建议使用类似于上面的代码,然后将所需的数据从事件对象中提取到另一个数据对象中并将其发布。

NB。由于该网址是虚假网址,因此该帖子未完成。触发事件也不同,但概念相同。

让我知道你的生活。

答案 1 :(得分:0)

这里有一些小提琴可能对您有用:

Fiddle

$('#id').on('click', function (event) {
    $.post( "https://httpbin.org/post", event).
    done(function( data ) {
       console.log( "Data Loaded: " + data );
       $( "#results" ).append( "Origin: "+ data.origin );
  });                    
});

在Ajax和javascript中,通常来说,回调是必不可少的概念。
因此,在上面的示例中,仅当服务器响应时,done内的函数才会执行。