在ajax请求中,我发送一个member_id数组,以便返回屏幕名称。成员id存储如下:
var member_id = [];
Ext.each(selected_rows, function(item) {
member_id.push(item.data.member_id);
});
然后我将它们发送到retrieve_members函数
Ext.Ajax.request({
action: 'retrieve_members',
member_id: member_id,
success_fn: function(response) {
//do stuff
}
}); //end ajaxRequest
Firebug在发送呼叫时显示此信息:
action retrieve_members
member_id 45FA3B10-4546-B9F7-D23
member_id 9627B65B-4D82-B2E8-4CE
在retrieve_members函数中:
function retrieve_members($request) {
$member_ids = substr($request->member_id,0,-1);
foreach($member_ids as $member_id) {
$current_member = Member::retrieveById($request->db, $member_id);
$member_list = $current_member->getGroupMembers();
$members = array();
foreach ( $member_list as $member ) {
$member_list[] = array(
'id' => $member->id,
'screen_name' => $member->screen_name,
);
}
}
return json_encode(array('status' => 'OK', 'member_list' => $member_list));
}
如果我删除foreach并替换以下行:
$member = Member::retrieveById($request->db, $request->$member_id);
我得到了1个成员的正确数据。我知道"substr($request->member_id,0,-1);"可能是错误的,但我已经多次尝试将正确的member_ids传递给foreach。我不确定我做错了什么,但就目前情况来看,member_list将始终返回null。感谢您的帮助!
更新:print_r($request->member_id);返回以下错误:
identifier starts immediately after numeric literal
[Break On This Error]
(9627B65B-4D82-B2E8-4CE)
您似乎正在覆盖一些变量。也许试试:
function retrieve_members($request) {
$member_ids = substr($request->member_id,0,-1);
foreach($member_ids as $member_id) {
$member = Member::retrieveById($request->db, $member_id);
$member_list = $member->getGroupMembers();
$members = array();
foreach ( $member_list as $tempMember ) {
array_push($members,array(
'id' => $tempMember->id,
'screen_name' => $tempMember->screen_name,
));
}
}
return json_encode(array('status' => 'OK', 'member_list' => $members));
}