2011-07-10 75 views
0

我真的不知道问题出在哪里,但前两个<select> + event对工作,但第三个不是,它几乎是完全一样的第二。

变量“firmName”解析为一个单字串,如果我手动与它的值替换变量,函数工作(但它是通过改变(onload事件触发代替),它绑定到):http://www.frende.me/invoiceBuilder.php

<select id="firm" name="firm"></select> 
<select id="client" name="client"></select> 
<select id="project" name="project"></select> 
<select id="task" name="task"></select> 
<p id="results"></p> 
<script> 
window.onload = (function(){ 
    $.ajax({ 
     /* populates the first <select> with <options> */ 
    }); 
}); 

$("#firm").change(function() { 
    var firmName = ""; 
    $("#firm option:selected").each(function() { 
     firmName += $(this).text() + " "; 
    }); 
    $.ajax({ 
     url: '_resources/db_clientworklog_selectField.php', 
     type: "POST", 
     data: ({ 
      table: firmName, 
      column: "client", 
      }), 
     success: function(data){ 
      $("#client").html(data); 
     } 
    }); 
}) 
.change(); 

$("#client").change(function() { 
    var firmName = $("#firm").val(); 
    $("#results").text(firmName); 
    $("#client option:selected").each(function() { 
     clientName += $(this).text() + " "; 
    }); 
    $.ajax({ 
     url: '_resources/db_clientworklog_selectField.php', 
     type: "POST", 
     data: ({ 
      table: firmName, /* if i replace "firmName" with one of the table's names, like "frende", it works (tho it populates immediately onload) */ 
      column: "project", 
      }), 
     success: function(data){ 
      $("#project").html(data); 
     } 
    }); 
}) 
.change(); 
</script> 
+0

这可能不是问题,但你应该拿出逗号在“列的结尾:“客户端“,”和“列:”项目“,”行,因为他们在数组的末尾。 IE可能是一个真正的问题。 –

+0

你确定firmName是不是未定义?我会在$(“#firm”)。val()之后向第三个更改绑定中发出警报,以确保它实际上获取了值。 –

+0

@bob baddeley:谢谢指出:) – jacob

回答

2

运行在Chrome的代码,我得到 Uncaught ReferenceError: clientName is not defined 改变用户端场时。您的客户名称未定义为代码。

当改变代码

$("#client").change(function() { 
    var clientName = "??"; // define the variable 
    var firmName = $("#firm").val(); 
    $("#results").text(firmName); 
    $("#client option:selected").each(function() { 
     clientName += $(this).text() + " "; 
    }); 
.... 

,它运行得很好,我

+0

您的触发器同时使用clientName和firmName - 不确定您打算在ajax调用中实际发送哪一个。 – Soren

+0

啊!谢谢!我使用php很多,所以我忘了JavaScript,你必须先定义一个变量,然后才能使用它。 – jacob

+0

btw我实际上同时发送firmName和clientName,因为firmName也是mysql数据库中表的名称,那么clientName也是表firmName的第一列的名称。 – jacob