2012-05-04 17 views
0

ActionMethodsに投稿してここにデータをプッシュすると、私は何が欠けていますか?Ajax投稿でデータをドロップダウン選択リストに入力しない

IQueryable(またはList)型のJsonオブジェクトのデータをドロップダウンメニューに挿入するActionMethodへの簡単なjavascript/jqueryの呼び出しを行う必要があります。

だから、私は2つのオプションが試した:私は "データが定義されていない" というエラーが出る

function populateuUsers(id) { 
    $.post("/User/GetUsersJson/", { id: id }, function (data) { 
     if ($.isEmptyObject(data)) { 
      alert("Empty"); 

     } 

     $.each(data, function (item) { 
      alert(item); 
      $("#user-list").append(
       $("<option></option>").text(data[item].FullName).val(data[item].Id) 
       ); 
     }); 

    }, "json"); 
} 

をそれから私が試した:

function populateUsers(id) { 
    $.ajax({ 
     type: 'post', 
     datatype: 'json', 
     url: "/User/GetUsersJson/" + id, 
     success: function (data) { 
      alert(data); 
      $.each(data, function (item) { 
       alert(item); 
       $("#users-list").append(
        $("<option></option>").text(data[item].FullName).val(data[item].Id)); 

      }); 
     }, 
     error:function() 
      { 
       alert(data); 
      } 

    }); 
} 

はどちらか動作しません。 何かに注意してください...私はブレークポイントを設定し、GetUsersJsonのアクションメソッドのデータを確認しましたユーザーコントローラーが適切に読み込まれ、JavaScript関数に返されます。

なぜそれが機能しないのですか?なぜ "データが未定義"で、何も返されないような行動をしますか?

ありがとうございます。

+0

? – MattSavage

+0

リポジトリからデータを取得し、Json(myUsers)を返します。 myUsersオブジェクトのタイプはIQueryable です。 ブレークポイントでデバッグすると、そのリストオブジェクトに約10人のユーザーが表示されます。あなたが実際のコードを見たいと思ったら教えてください。 – Shenaniganz

+0

何も返されないので何も返されないかのように動作するかもしれません。あなたのブラウザのデバッガを開いて、コールバック関数にブレークポイントを設定し、実際に何かがあればデータオブジェクトを調べましたか? –

答えて

0

$.eachに渡す匿名関数の中では、dataは定義されていません。代わりに、その関数に2つの変数を渡す必要があります。何かのように:

あなたGetUsersJsonのアクションは、コントローラ上のように見えるん何
$.each(data, function (key, item) { 
    alert(item); 
    $("#users-list").append(
     $("<option></option>").text(item.FullName).val(item.Id)); 

}); 

http://api.jquery.com/jQuery.each/

+0

すごく混乱しています。この場合、「キー」とは何ですか? – Shenaniganz

+0

キーは前に 'item'を呼んでいたものです。それはあなたが反復している地図の鍵です。 JSON構造を投稿した場合に役立ちます。 –

関連する問題