[英]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.