1

少し問題があります。$.get()jQueryを使用したリクエストからjsonデータを取得しました

出力は次のとおりです。

[
    {"name":"Silver","price":525,"per_month":"20","first_invoice":"20"},
    {"name":"Gold","price":500,"per_month":"50","first_invoice":"0"},
    {"name":"Avion","price":750,"per_month":"10","first_invoice":"10"}
]

オブジェクトごとにLIを使用してULを生成しようとしています...

私はこの小さなコードを書きます:

//send get request
    $.get(
        url, 
        { 'dst': dst, 'price':price },
        function(data) {

            var objects = jQuery.parseJSON(data);

            var items = [];

            jQuery.each(objects, function(){
                console.log(this);

                items.push('<li id="' + this.name + '">' + this.price + '</li>');
            }); 

            jQuery('<ul/>', {
                'class': 'my-new-list',
                html: items.join('')
            }).appendTo('#results');                
        }
    );

私が使用するとき、console.log()各オブジェクトはfirebugによってログに記録されます:エラーなし...それは動作します。

これは、items.push()appendTo()も生成しないとです...コンソールにエラーはありません...私の#resultsdivに追加はありません...

私は何か間違ったことをしていると確信しています。誰かが私を助けることができますか?

アップデート

FabrícioMatté(後の回答)の助けを借りて、問題はiframeでした。

jQuery('<ul/>', {
                'class': 'my-new-list',
                html: items.join('')
            }).appendTo(jQuery('body').find('#results'));  

それはうまくいきます=)

すぐにSeyyouStackoverflow Community

4

2 に答える 2

1

編集: Joãoのコメントによると、元のコードは完全に正常に機能しています。次のことを確認してください。

  1. #resultデータを追加しようとすると、DOMにあります。
  2. jQuery.parseJSON(data)オブジェクトの配列を返します。
  3. jQueryは適切に含まれており、その行を実行する前に構文エラーは発生しません。
  4. 読みやすくするために、コードを少し書き直しました。

    var objects = jQuery.parseJSON(data);
    
    var items = '';
    
    jQuery.each(objects, function(){
        items += '<li id="' + this.name + '">' + this.price + '</li>';
    }); 
    
    jQuery('<ul/>', {
        'class': 'my-new-list'
    }).html(items).appendTo('#results');
    

フィドル


編集

iframeOPのコメントによると、セレクターを使用して、最初の要素を参照せずに内部の要素を選択することはできませんdocument。これが私がそれをどのように行うかcontents()ですfind()

//replace the $('iframe') with ID/class selector if possible
jQuery('iframe').contents().find('#results').append(jQuery('<ul/>', {
    'class': 'my-new-list'
}).html(items));

フィドル

iframeドキュメントが別のホスト、ポート、またはプロトコルからのものである場合、これは機能しないことに注意してください。
同一生成元ポリシーリファレンス

于 2012-09-13T09:35:07.927 に答える
0
$('<ul>')
    .addClass('my-new-list')
    .html($.map(objects, function(el) {
        return '<li id="' + el.name + '">' + el.price + '</li>';
    }).join("\n"))
    .appendTo('#results');
于 2012-09-13T09:42:44.663 に答える