2012-03-02 11 views
1

私は再利用できるように、ajax呼び出しの周りに関数を作成したいと考えています。しかし、条件に基づいてdata: ({ … })の部分を(switchを介して)入力することに問題があります。私は、未定義の変数を送信AJAX呼び出しをしようと、私は動的にdata: ({ … })を設定したいときjavascript + jquery ajax:条件付き "data"要素

var d = {}; 
function lookup (what,etat,compt,vile,zip) { 
    switch(what) { 
     case "cou_mun": 
      d: ({ 
       lookup: "county", 
       state: etat 
      }) 
      break; 
     case "city": 
      d: ({ 
       lookup: "city", 
       state: etat, 
       county: compt 
      }) 
      break; 
     case "zipcode": 
      d: ({ 
       lookup: "zipcode", 
       state: etat, 
       county: compt, 
       city: vile 
      }) 
      break; 
     default:break; 
    } 
    $.ajax({ 
     url: "socioGeo_envnLookup.php", 
     type: "POST", 
     data: d, 
      //lookup: "county", //"county" or "city" or "zipcode" 
      //state: etat 
      //county: cou_mun, 
      //city: city, 
     success: function(what,data) { 
      $('select[name="'+what+'"]').html(data); 
     } 
    }); //$.ajax 
} //lookup() 

そして私はlookup("city",state,county);

IEのようにそれを呼ぶだろうが文句を言います。

+2

であるべき。また、関数内で 'd'をローカルに定義するようにしてください。 –

+0

@FelixKlingなぜ '成功'に '何が' 'データ'にあるべき値として知っていますか?成功の中で、 'what' =' data'と 'data = function toSource 'にあるべきhtml(' what =' + what '+' data '+ data.toSource); ' (){[ネイティブコード]} ' – jacob

答えて

4
d: ({ 
      lookup: "county", 
      state: etat 
     }) 

あなたは**代入演算子 '='によって行われるD ' `に**値を割り当てる必要があり

d = { 
     lookup: "county", 
     state: etat 
    }; 
+0

ああ、助けになる。あなたはなぜ '成功'の '何が' 'データ'にあるべき値として 'なぜ'を知っていますか?成功の中で、 'what' =' data'と 'data = function toSource 'にあるべきhtml(' what =' + what '+' data '+ data.toSource); ' (){[native code]} ' – jacob

+1

成功には、次のシグネチャがあります:' success(data、textStatus、jqXHR) '。最初のパラメータはデータ、2番目はステータスです。それがなぜ「何」がデータなのかということです。このパラメータの名前は重要ではなく、jqueryはデータを最初のパラメータとして渡します。 –

+0

Ah。はい。どのようにして '成功'に '何 'を渡して指定された選択肢にデータをロードできますか? – jacob

関連する問題