ReferenceError:未定义field_2a

时间:2012-10-03 07:43:46

标签: javascript jquery

我有三个输入字段,我想在输入数据时获取数据。 虽然它工作正常但仍然在firebug中显示此错误。

希望有更好的方法来做到这一点。

错误显示在冷杉中:

ReferenceError: field_2a is not defined
[Break On This Error]   

...ataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + fie...

我的脚本如下:

<script>

        function getFielddata(field_id, field_value){
            if(field_value != ""){


                //alert(field_id+" "+field_value);
                if(field_id == "field-1a"){

                    if(field_value){
                        field_1a = field_value;
                    }
                    else
                    {
                        field_1a = "";  
                    }
                }

                else if(field_id == "field-2a"){
                    if(field_value){
                        field_2a = field_value;
                    }
                    else
                    {
                        field_2a = "";  
                    }

                }

                else if(field_id == "field-4a"){
                    if(field_value){
                        field_4a = field_value;
                    }
                    else
                    {
                        field_4a = "";  
                    }
                }

                var dataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + field_4a;
                //alert(dataString); return false;
                $.ajax({
                   type: 'POST',
                   url: 'get_query.php',
                   data: dataString,
                   success: function(data) {
                    //$("#SuburbDiv").html(data);
                    alert("data inserted successfully");
                   }
                  });

            }
        }

    </script>

我正在保存onChange事件,如下所示:

<input type="text" id="field-2a" onChange="getFielddata(this.id, this.value)"/>

和帮助???

注意:没有提交按钮

2 个答案:

答案 0 :(得分:1)

除非您在其他范围内定义这些变量,否则它们尚未声明。

使用var关键字在函数顶部声明它们。

var field_1a, field_2a, field_4a;

答案 1 :(得分:0)

这种情况正在发生,因为您正在初始化永不执行的if语句中的field-#a,然后您尝试访问它们。我也有一种感觉,这些变量必须是函数的局部变量。试试这个:

function getFielddata(field_id, field_value){
        if(field_value != ""){
            var field_1a = "",
                field_2a = "",
                field_4a = "";

            //alert(field_id+" "+field_value);
            if((field_id == "field-1a")){
                field_1a = field_value;
            }
            else if((field_id == "field-2a")){
                field_2a = field_value;
            }
            else if((field_id == "field-4a")){
                field_4a = field_value;
            }

            var dataString = 'field-1a='+ field_1a + '&field-2a=' + field_2a + '&field-4a=' + field_4a;
            //alert(dataString); return false;
            $.ajax({
               type: 'POST',
               url: 'get_query.php',
               data: dataString,
               success: function(data) {
                //$("#SuburbDiv").html(data);
                alert("data inserted successfully");
               }
              });

        }
    }