私は 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));
});
これまでに行ったことは次のとおりです。
両方の結果セットに同じフィールド、つまり「id」と「name」があることを確認しました。フィルタリングされたデータセットには、フィルタリングされていない結果よりも多くのフィールドが含まれていますが、それは問題ではないと思います。
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"}, .... など.
コード スニペットからわかるように、ループ内で何が起こっているかを確認するために、いくつかのデバッグ情報を追加しようとしました。ただし、最初の console.log() 呼び出しで次のエラー メッセージが表示されます。
[17:13:30.675] TypeError: "objectid is:".objswitch が定義されていません
これを解決する方法がよくわかりません。任意の提案をいただければ幸いです。ばかげた間違いである場合は、事前にお詫び申し上げます。私は一日中プログラミングをしていて、私の脳はどろどろです! =)
助けてくれてありがとう。