0
我使用RS-JAX GET請求在html中加載。請求後,我需要功能二來開始監聽輸入。在其他功能完成後收聽功能
下面是我試過的,但現在我得到兩個錯誤: 1)TypeError:functionTwo不是函數。 2)ReferenceError:loadIngredients未定義。
我對#2的猜測是我在另一個函數中調用它,而var functionOne正在搞亂它。我不知道#1。
有沒有辦法解決這個問題?也許通過編輯代碼,也許通過另一種方式來監聽函數完成時的情況?
功能一個
var functionOne = function loadIngredients(selected) {
var r = $.Deferred();
var username = window.sessionStorage.getItem("huidigeGebruiker");
var datum = document.getElementById("datepicker").value;
var url = "restservices/ingredients?Q1=" + username + "&Q2=" + datum;
$.ajax({
url : url,
method : "GET",
beforeSend : function(xhr) {
var token = window.sessionStorage.getItem("sessionToken");
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
},
success : function(data) {
$(".table").find("tr:gt(0):not(:last)").remove();
$(data).each(function (index) {
$(".table").find('tr:last').prev().after('<tr><td class="ingredient">'+this.ingredientnaam+'</td><td class="hoeveelheid"><input class="gramtxt" type="text" value="'+this.hoeveelheid+'" name="gramtxt" id="gramtxt"></td><td class="subtotaal">'+this[selected]+'</td><td class="removeingredient"><a href="#"> <i class="fa fa-times text-red"></i></a></td></tr>');
});
loadTotals();
ingredienten = [];
loadAllIngredients();
},
error: function(xhr){
$(".dagboektable").html('Ophalen ingrediënten mislukt. Ben je ingelogd?');
},
});
return r;
}
兩個作用
var functionTwo = $('#gramtext').bind('input', function() {
console.log("Y");
var hoeveelheid = $(this).val();
console.log(hoeveelheid);
});
監聽
需要functionOne().done(functionTwo());
'functionTwo'不是一個函數,它是任何'bind'返回的,iirc是綁定函數返回的任何東西,在這種情況下什麼也不是。做'console.log(functionTwo)'看看它是什麼。 – Carcigenicate
@Carcigenicate任何想法如何我可以解決這個問題,因此它適用於我的目的? –
您正在使用var functionTwo,這意味着它在運行functionOne的那一刻尚未被聲明。這個概念在這裏解釋:https://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname。定義爲函數functionTwo()使用早期的函數 –