0

私は codeigniter アプリを持っており、私のビューの 1 つで、json データを返す API への ajax 呼び出しがあります。データを取得したら、それをループして既存のテーブルにレコードを追加します。この ajax 呼び出しを実行するには、2 つの方法があります。1 つは「すべての」データを要求する方法で、もう 1 つは場所でフィルタリングする方法です。どちらの方法でもデータが返されますが、フィルタリングされたデータセットをループしようとすると、ajax が失敗します。

レコード セットをループするコードは次のとおりです。

if (JSONdata.length != 0) 
{
        //create a heading row and attach it to the existing table.
        var heading = $('<tr id="tblheading" naming="tblheading">').appendTo($('#switchrecords'));
        heading.append($('<td>').append().text('Name'));
        heading.append($('<td>').append().text('Object ID'));

        //loop through each JSONdata item in the array and append another row to the switchrecords table.
        $.each(JSONdata, function(i, objswitch) {                           
            console.log('objectid is:'.objswitch.id);
            console.log(objswitch.id);
            var row = $('<tr>').appendTo($('#switchrecords'));
            row.append($('<td>').append($('<a href='+ BASEPATH + 'index.php/controller/methodname/' + objswitch.id + '>').text(objswitch.name)));
            row.append($('<td>').append(objswitch.id).text(objswitch.id));
});

これまでに行ったことは次のとおりです。

  1. 両方の結果セットに同じフィールド、つまり「id」と「name」があることを確認しました。フィルタリングされたデータセットには、フィルタリングされていない結果よりも多くのフィールドが含まれていますが、それは問題ではないと思います。

  2. console.log を使用して両方の結果セットをダンプしました...両方のスニペットを次に示します。最初の 1 つは ALL で、もう 1 つはフィルター処理されます。

    [{"名前":"888-12-993-99-1","id":"1","dict_value":"コンパクト"},{"名前":"888-22-SR1-RTR-1 ","id":"2","dict_value":"compact"},{"name":"888-21-SR1-SW-1","id":"3","dict_value":"compact "},{"name":"888-11-SR2-SW-2","id":"4","dict_value":"compact"},....など

    [{"parent_id":"2","tag_id":"10","場所":"建物 1","id":"7","名前":"888-22-228-22-1", "label":null,"asset_no":"1026067","objtype_id":"1503"},{"parent_id":"2","tag_id":"5","Location":"Building2","id ":"6","name":"888-2-263-88-1","label":null,"asset_no":"1026068","objtype_id":"1503"}, .... など.

  3. コード スニペットからわかるように、ループ内で何が起こっているかを確認するために、いくつかのデバッグ情報を追加しようとしました。ただし、最初の console.log() 呼び出しで次のエラー メッセージが表示されます。

    [17:13:30.675] TypeError: "objectid is:".objswitch が定義されていません

これを解決する方法がよくわかりません。任意の提案をいただければ幸いです。ばかげた間違いである場合は、事前にお詫び申し上げます。私は一日中プログラミングをしていて、私の脳はどろどろです! =)

助けてくれてありがとう。

4

2 に答える 2

3

私が完全に離れていない限り、それはある.objswitchべきであるように見えます+ objswitch

試す

console.log('objectid is:' + objswitch.id);

それ以外の

console.log('objectid is:'.objswitch.id);
于 2012-09-20T21:23:02.860 に答える
1

構文が連結に対して間違っているようです.. +を使用して実行する必要があります。を使用しているようです。 objswitchの代わりにこれを使用してみてください

$.each(JSONdata, function(i) {                           
    console.log('objectid is:' +  this.id);
    console.log(this.id);
    var row = $('<tr>').appendTo($('#switchrecords'));
    row.append($('<td>').append($('<a href='+ BASEPATH + 'index.php/switches/getswitchdetails/' + this.id + '>').text(this.name)));
    row.append($('<td>').append(this.id).text(this.id));
});

それ以外の場合は、一般的に変数を使用してみてください

$.each(JSONdata, function(i) {                           
    console.log('objectid is:'+  JSONdata[i].id);
    console.log(JSONdata[i].id);
    var row = $('<tr>').appendTo($('#switchrecords'));
    row.append($('<td>').append($('<a href='+ BASEPATH + 'index.php/switches/getswitchdetails/' + JSONdata[i].id + '>').text(JSONdata[i].name)));
    row.append($('<td>').append(JSONdata[i].id).text(JSONdata[i].id));
});
于 2012-09-20T21:22:40.963 に答える