0

3つの入力フィールドがあり、データが入力されたときにそこにデータを取得したいと思います。正常に動作しますが、それでもファイアバグでこのエラーが表示されます。

これを行うためのより良い方法があることを願っています。

firbugに表示されるエラー:

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)"/>

とヘルプ???

注:送信ボタンはありません

4

2 に答える 2

1

これらの変数を他のスコープで定義していない限り、それらは宣言されていません。

varキーワードを使用して、関数の先頭でそれらを宣言します。

var field_1a, field_2a, field_4a;
于 2012-10-03T07:46:52.163 に答える
0

これはfield-#a、実行されないifステートメントの内部を初期化してから、それらにアクセスしようとするために発生します。また、これらの変数は関数に対してローカルである必要があると感じています。これを試して:

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");
               }
              });

        }
    }
于 2012-10-03T07:52:58.400 に答える