我正在尝试使用bootstrap typeahead插件,但我需要获得正确的JSON输出。
根据本页上的最后一个示例,您可以在JSON响应中使用不止一个key->value
:http://twitter.github.io/typeahead.js/examples/
以下是我的PHP代码:
$objDB = new DB;
$xml = $objDB->setStoredProc('shadowGetEmp')
-> setParam("ntid", $query)
-> execStoredProc()
-> parseXML();
foreach($xml->emp as $emp){
$name = $emp->FirstName .' '. $emp->LastName;
$qid = $emp->QID;
$empID = $emp->EmpID;
$users[] = array('name'=> $name, 'qid'=> $qid, 'empID'=> $empID);
}
header('Content-Type: application/json');
echo json_encode($users);
JSON响应如下所示:
[{
"name": "John Doe",
"qid": {
"0": "Q1234"
},
"empID": {
"0": "123"
}
}, {
"name": "Bob Jones",
"qid": {
"0": "Q5678"
},
"empID": {
"0": "456"
}
}, {
"name": "Mike James",
"qid": {
"0": "Q2233"
},
"empID": {
"0": "789"
}
}, {
"name": "Harry Potter",
"qid": {
"0": "Q2212"
},
"empID": {
"0": "223"
}
}]
如何将响应格式化为正确的JSON输出?
我认为这是因为关联数组,但不确定如何包含不仅仅是一个键/值和格式化JSON。
看起来$emp->QID
和$emp->EmpID
正在返回一个包含一个元素的数组。
要么修复在$emp
实例中分配这些变量的代码(更好的是,这些变量应该只是数字/id值,而不是数组),要么在这里进行补偿(肮脏的解决方案,但会起作用)。