2

フィールド名をオプション値にプッシュし、結果を選択のテキストにプッシュしたいと思います。次のようになります。

<select id="ddl_fields">
    <option value="RoleId">e407d28a</option>
    <option value="RoleName">Sales</option>
</select>

これは、データベースから返されたjsonオブジェクトです。

"[{"RoleId":"e407d28a","RoleName":"Sales"}]"

これはコードであり、有効な結果を返します。

function getFields(){
        var the_id = $(".hid_ID").val();
        var jsonText = JSON.stringify({ id: the_id });
        $.ajax({
            type: "POST",
            url: "bc_Admin.aspx/getFields",
            data: jsonText,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d != "0") {
                    var obj = $.parseJSON(data.d);
                     //what needs to change???
                    $.each(obj, function (index, value) {
                        $('#ddl_fields')
                        .append($("<option value=" + value.id_Role + ">" + value.RoleName + "</option>"));
                    });
                }
            } //end success
        });
    }

この質問に似ていますが、JQueryソリューションが必要です。 ExtJSでJSONデータのすべてのフィールド名を取得/一覧表示するにはどうすればよいですか?

ありがとう!

4

5 に答える 5

2

オブジェクトのキーを反復処理し、hasOwnPropertyプロトタイプではなくオブジェクトのキーであることを確認するために使用する必要があります。

var key, keys = [];

for (key in obj) {
  if (obj.hasOwnProperty(key))
    keys.push(key)
}
于 2013-01-17T18:59:56.657 に答える
2

オブジェクトをループして、hasOwnProperty()を使用する必要があります。

for (var i in inputData) {
  if (inputData.hasOwnProperty(i)) {
  console.log(i + " , " + inputData[i]);
}}

この例では、コンソールキー:valueにログを記録します。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

于 2013-01-17T19:00:07.983 に答える
2

投稿data.dした形式がobj配列であり、配列自体ではなく配列内のオブジェクトを反復処理したいとします。

$.each(obj[0], function (index, value) {
    $('#ddl_fields')
    .append($("<option value=" + index + ">" + value + "</option>"));
});
于 2013-01-17T19:05:07.493 に答える
0

変更するだけ

$.each(obj, function (index, value) {

$.each(obj[0], function (index, value) {

問題は、jsonで配列を返すことです

于 2013-01-17T19:04:08.817 に答える
0

私が理解しているかどうかはわかりませんが、あなたが望むものを手に入れるために私がすることは次のとおりです(私はあなたのコードもより単純にしました):

function getFields(the_id){
    $.ajax({
        type: "POST",
        url: "bc_Admin.aspx/getFields",
        data: { id : the_id },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            for(var i = 0; i < data.length; i++){
                console.log(i + ": " + data[i]);
            }
        },
        error : function(s , i , error){
            console.log(error);
        }
    });
}
于 2013-01-17T19:07:25.820 に答える