使用jQuery .val()获取输入值 - 从数据库加载数据

时间:2012-02-13 21:43:17

标签: jquery

我有一个特别的问题。我的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);

4 个答案:

答案 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);
});