簡體   English   中英

事件函數內的 Ajax 調用

[英]Ajax Call inside event function

我一直在嘗試在事件處理函數中執行 AJAX 調用大約一天,嘗試了很多when()then()done()東西,並設置async: false但我仍然以 undefined 告終錯誤。 我的代碼如下所示:

$('#id').on('itemMoved', function (event) {
  console.log(event);
  $.ajax({
    type: "POST",
    url: "create.php",
    data: event
  });
});

我需要將事件對象傳遞給 create.php 來做一些服務器端的事情。 由於console.log(event)正確打印對象,我猜原因是 ajax 的異步行為 - 但仍然不知道如何解決它。

編輯:首先,很抱歉沒有完成它。 缺乏知識使得決定什么是相關的變得更加困難。

itemMoved是 jQuery UI Widget jxqkanban 的一個事件。 它在拖動看板項時觸發,並保存有關新舊列和項數據的信息( 文檔)。 我認為 AJAX 在對象內容完全解析之前運行,導致

Uncaught TypeError: Cannot read property 'target' of undefined

謝謝你的時間。

剛剛在這里玩了 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,因為它將引用事件目標。

我會建議類似於上面的代碼,並將您需要的數據從事件對象中提取到另一個數據對象中並發布。

注意。 由於網址是假網址,帖子未完成。 觸發事件也不同,但概念是相同的。

讓我知道你是怎么辦的。

這里有可能對您有用的小提琴:

小提琴

$('#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 里面的函數只有在服務器響應時才會執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM