2016-11-26 25 views
0

jQuery get関数を使用して別のページに情報を送信し、現在のページでアラートとしてデータを返すスクリプトを作成しています。私は検索フォームの上にドロップダウンメニューで選択されたオプションによって生成された値であるコレクタIDだけでなく、入力フォーム(この作品)から検索フィールドの値を送信しようとしています。JS関数間の可変スコープ:変数が定義されていません

残念ながら、スクリプトを実行すると、「collector_id is undefined error」というエラーが発生します。私は変数の範囲に問題があると思うが、多くのオプションを試して、get関数で使用するcollector_idの値を保持する解決策を見つけることができないようだ。

$(document).ready(function() { 

     $(".search-field").keyup(function() { 

//THIS FUNCTION UPDATES THE COLLECTOR ID VARIABLE FROM DROPDOWN MENU VALUE SELECTED BY USER 
$("select") 
    .change(function() { 
    var collector_id = ""; 
    $("select option:selected").each(function() { 
     collector_id += $(this).data('value') + " "; 
    }); 
    }) 
    .change(); 

//THIS FUNCTION DOES A SEARCH ON ANOTHER PHP SCRIPT PASSING search and collector_id values 
    if($(".search-field").val().length > 3) { 
    var search = $(".search-field").val(); 
    $.get("query-include.php" , {search: search, collector_id: collector_id}) 
    .done(function(data) { 
     alert("Data Loaded: " + data); 
    }); 
    } 
    }); 

    }); 
+0

のスコープになります。コードが適切にインデントされていないと判断することは、ほぼ不可能です。 – Tomalak

+2

'collector_id'は' change'ハンドラのスコープの変数です。他の場所で定義された 'collector_id'はありません。 –

答えて

1

あなたintendationを修正してくださいあなただけの変更の外collector_idを初期化する必要があるので、それは$に.get

var collector_id = ""; 
$("select") 
.change(function() { 
    $("select option:selected").each(function() { 
     collector_id += $(this).data('value') + " "; 
    }); 
}) 
.change(); 

//THIS FUNCTION DOES A SEARCH ON ANOTHER PHP SCRIPT PASSING search and collector_id values 
if($(".search-field").val().length > 3) { 
    var search = $(".search-field").val(); 
    $.get("query-include.php" , {search: search, collector_id: collector_id}) 
    .done(function(data) { 
     alert("Data Loaded: " + data); 
    }); 
} 
}); 
+0

ありがとうございます!今働く。 –

関連する問題