我有一个特别的问题。我的HTML <input>
元素中的数据是从数据库加载的。
结果,当我尝试获取要在下面的函数“getsAPIData”中使用的这些输入框的值时,它返回undefined,因为尚未加载值。
在使用.val()
之前,我需要等待输入字段填充数据库中的数据
var weight = $('#letterhead_weight').val();
var size = $('#letterhead_size').val();
var type = $('#letterhead_type').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
答案 0 :(得分:1)
您的数据是如何从数据库中提取的?
如果页面同步,您可以将其包装在document.ready样式调用中,以便在触发前等待页面完全加载。
$(function(){
var weight = $('#letterhead_weight').val();
var size = $('#letterhead_size').val();
var type = $('#letterhead_type').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
});
如果是 async 调用,则需要在数据库检索例程中放置一个回调函数,以便在JS完成后触发它。
$.ajax({
type: 'POST',
url: url,
data: data,
success: function() {
var weight = $('#letterhead_weight').val();
var size = $('#letterhead_size').val();
var type = $('#letterhead_type').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
},
dataType: dataType
});
答案 1 :(得分:0)
在success()函数中设置AJAX请求的变量值:
// declare them outside of the ajax function, so that you have access
// to them throughout your script
var var1;
var var2;
$.ajax({
url: "test.php",
success: function(response){
var1 = response.data1;
var2 = response.data2;
}
});
答案 2 :(得分:0)
我真的不明白如何在加载正文后从batabase加载,但你可以使用delay()
函数,它将等待你设置的值。
//NOT RECOMMENDED
var weight = $('#letterhead_weight').delay('MILISECS').val();
var size = $('#letterhead_size').delay('MILISECS').val();
var type = $('#letterhead_type').delay('MILISECS').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
或者如果它与de document同时加载,只需使用
$(document).ready(function() {
var weight = $('#letterhead_weight').val();
var size = $('#letterhead_size').val();
var type = $('#letterhead_type').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
});
祝你好运!
答案 3 :(得分:0)
我认为你不是在等待DOM做好准备。将代码包装在dom ready事件中。试试这个。
$(function(){
var weight = $('#letterhead_weight').val();
var size = $('#letterhead_size').val();
var type = $('#letterhead_type').val();
obtainAPIData('get_letterhead', '#product_info', 'JSON', type, weight, size);
});