【问题标题】:Why are values undefined when submit form with javascript?为什么使用javascript提交表单时值未定义?
【发布时间】:2012-11-22 00:34:30
【问题描述】:

javascript:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
$(function() {
  //
  $('#button_submit').click(function() {
    var start_date = $('start_date').val();
    var end_date = $('end_date').val();
    var type = $('type').val();
    alert(start_date);
  });
});
// 
function drawChart() {
  var jsonData = $.ajax({
    url: "visits/day.php?start_date=" + start_date + "&end_date=" + end_date,
    dataType: "json",
    async: false
  }).responseText;

  var obj = jQuery.parseJSON(jsonData);
  var data = google.visualization.arrayToDataTable(obj);


  var options = {
    title: 'Number of visitors'
  };

  if (type === 'pie') {
    var chart = new google.visualization.PieChart(
      document.getElementById('chart_div'));
      chart.draw(data, options);
  }
  if (type === 'bar') {
    var chart = new google.visualization.BarChart(
      document.getElementById('chart_div'));
      chart.draw(data, options);
  }
}  

html:

<form id="myForm">
    <input type="text" name="start_date" id="start_date"><br />
    <input type="text" name="end_date" id="end_date"><br />
    <input type="text" name="type" id="type"><br />
    <input type="button" id="button_submit" value="go">
</form>
<div id="chart_div" style="width: 900px; height: 500px;"></div>

表单获得的变量似乎是空的,我做了那个 alert(start_date) 并说:未定义并且没有通过 url:visits/day.php?start_date...

我需要在不刷新页面的情况下为我的 php 页面发送这些值

我做错了什么?

【问题讨论】:

  • 您应该指定您正在使用的支持库...我猜是 $() 中的 jQuery,但是使用 $ 的库不止一个。

标签: php javascript ajax forms google-visualization


【解决方案1】:
var start_date = $('#start_date').val();
var end_date = $('#end_date').val();
var type = $('#type').val();

这将通过id# 后跟id 值)查找 HTML 元素。

$('start_date').val();

上面会找到标签名为&lt;start_date&gt;的元素

接下来,您的变量具有函数可见性范围。所以它们只在匿名函数中定义(并且可见)(即button_submit点击处理程序的回调)。

【讨论】:

  • 是的,-.- 我想念那个。顺便说一句,按钮没有做任何事情:s 我没有看到正在发送的值并且没有出现结果,代码有什么问题吗?
  • @skdnewbie:删除它并再次逐行编写,检查代码的行为是否符合预期。这称为调试,每个开发人员都应该知道如何调试他们的代码。
【解决方案2】:

添加到上面...我看不到您将start_dateend_date 传递给drawChart() 函数的位置:

编辑添加对 drawChart() 的调用

$(function() {
  //
  $('#button_submit').click(function() {
    var start_date = $('#start_date').val();
    var end_date = $('#end_date').val();
    var type = $('#type').val();
    drawChart(start_date, end_date)
    console.log(start_date, end_date, type);
  });
});
function drawChart(start_date, end_date) {
  var jsonData = $.ajax({
    url: "visits/day.php?start_date=" + start_date + "&end_date=" + end_date,
    dataType: "json",
    async: false
  }).responseText;

【讨论】:

  • 完成,但仍然没有数据:s 我按下按钮,没有任何改变。 Firebug 不报告任何错误
  • 您是否尝试在$('#button_submit').click() 末尾添加对drawChart(start_date, end_date) 的呼叫?
  • 干杯。同时编辑了我上面的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多