我有一个返回两个查询的模型。
这是它返回的模型的一部分
$debit_journal_query = $this->db->select('journal_id, date, account, debit, credit')
->from('journal_trans')
->where('journal_id', $debit_journal_id)
->get();
$credit_journal_query = $this->db->select('journal_id, date, account, debit, credit')
->from('journal_trans')
->where('journal_id', $credit_journal_id)
->get();
return array('debit' => $debit_journal_query, 'credit' => $credit_journal_query);
这是我的控制者。我使用json_encode
传递了$data
//This method adds a double journal entry to the journal table
public function doubleAddJournal() {
//Get the values from post
$date = $this->input->post('date');
$amount = $this->input->post('amount');
$debit = $this->input->post('debit');
$credit = $this->input->post('credit');
$user = $this->session->userdata('username');
$data = $this->JournalModel->doubleAddJournal($date, $amount, $debit, $credit, $user);
echo json_encode(array('data' => $data););
}
这是我的ajax电话
$.ajax({
type: 'POST'
, url: '<?php echo base_url('doubleAddJournal'); ?>'
, data: { date: date
, amount: amount
, debit: debit
, credit: credit
}
, dataType: 'json'
, success: function(data) {
$('#journalDoubleAdd').modal('close');
$(data).each(function() {
$('#journalLogs').append($('<tr id="'+ this.journal_id +'">'
+ '<td class="dateJournal">'+ this.date +'</td>'
+ '<td class="accountJournal">'+ this.account +'</td>'
+ '<td class="debitJournal">'+ parseFloat(this.debit).toFixed(2) +'</td>'
+ '<td class="creditJournald">'+ parseFloat(this.credit).toFixed(2) +'</td>'
+ '</tr>'));
});
}
, error: function(errorw) {
alert('error');
}
});
但是我对$(data).each(function(){})
内的所有值都未定义。我哪里弄错了?我知道你在访问一个查询时如何做到这一点。但是,当您传递多个查询结果时,如何做到这一点?感谢。
答案 0 :(得分:2)
您使用<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.android.camera2basic.AutoFitTextureView
android:id="@+id/texture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<include layout="@layout/drawer_main"
android:id="@+id/drawerInclude" />
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@android:color/transparent" />
<FrameLayout
android:id="@+id/control"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabCam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:scaleType="center"
app:srcCompat="@android:drawable/ic_menu_camera"
app:backgroundTint="@color/control_background" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabSwap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_margin="@dimen/fab_margin"
android:scaleType="center"
app:srcCompat="@drawable/ic_swap"
app:backgroundTint="@color/control_background" />
</FrameLayout>
</FrameLayout>
代替.each()
,因此您将$.each()
视为DOM选择器。而不是你应该使用:
data
检查两者的文档:
根据数组结构更新。您需要迭代第一维,然后在第二维之后迭代,所以:
$.each(data.data, function (key, value) {
('#journalLogs').append($('<tr id="'+ value.journal_id +'">'
+ '<td class="dateJournal">'+ value.date +'</td>'
+ '<td class="accountJournal">'+ value.account +'</td>'
+ '<td class="debitJournal">'+ parseFloat(value.debit).toFixed(2) +'</td>'
+ '<td class="creditJournald">'+ parseFloat(value.credit).toFixed(2) +'</td>'
+ '</tr>'));
});
答案 1 :(得分:2)
在php中使用json_encode($data);
在js中使用
$.each(data, function(i, v){
/* your dom manipulation code*/
});