Javascript 无法从api回调json数据
我有自己用php编写的api。基本上,我有一个下拉列表,用输入的关键字调用我的api。 输入的示例关键字be=test。因此,使用关键字参数对api/search/with GET请求进行ajax调用 api搜索函数Javascript 无法从api回调json数据,javascript,php,jquery,json,api,Javascript,Php,Jquery,Json,Api,我有自己用php编写的api。基本上,我有一个下拉列表,用输入的关键字调用我的api。 输入的示例关键字be=test。因此,使用关键字参数对api/search/with GET请求进行ajax调用 api搜索函数 public function search() { if($this->get_request() != "GET") { $this->response("Wrong Request"); } $keyword = $this
public function search() {
if($this->get_request() != "GET") {
$this->response("Wrong Request");
}
$keyword = $this->request['keyword'];
if(!empty($keyword)) {
$query = "SELECT id,name FROM salon WHERE name LIKE '$keyword% %'
UNION
SELECT id,name FROM salon WHERE name LIKE '% $keyword%'
UNION
SELECT id,name FROM salon WHERE name LIKE '$keyword%'
UNION
SELECT id,subcat FROM service WHERE subcat LIKE '$keyword% %'
UNION
SELECT id,subcat FROM service WHERE subcat LIKE '% $keyword%'
UNION
SELECT id,subcat FROM service WHERE subcat LIKE '$keyword%'
UNION
SELECT staff_id,staff_name FROM staff WHERE staff_name LIKE '$keyword% %'
UNION
SELECT staff_id,staff_name FROM staff WHERE staff_name LIKE '% $keyword%'
UNION
SELECT staff_id,staff_name FROM staff WHERE staff_name LIKE '$keyword%'";
$result = mysql_query($query);
$sum_result = array();
if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
$sum_result[] = $row;
}
$this->response(json_encode($sum_result));
} else {
$this->response("No Content Found");
}
} else {
$this->response("Keyword Empty");
}
}
API响应正确-让示例关键字=test。。
答复为=
[{"id":"354118C3-EA70-454D-AE19-46DBD7E3B5D6","name":"test multi"},{"id":"955B6DF0-0666-40A1-8906-23B4348F449B","name":"test ses"},{"id":"A7598E0C-D80B-4F72-9E6C-9DD5620F68D3","name":"Test 3"},{"id":"C33AC5F0-21A2-484E-8A29-DC6D183EB067","name":"Test 1"},{"id":"EC52F80A-C9CE-4642-963F-0BE7D96F5E36","name":"Test 2"},{"id":"F2333012-EE1A-42DA-A892-F9D7F986E287","name":"Test 4"}]
我的JQuery:
$('.salon-service').autocompleteInput(function(text,callback) {
if (!text) {
callback(['January','February','March','April','May','June','July','August','September','October','November','December']);
} else {
$.ajax({
url: 'api/search/',
type: 'GET',
dataType: 'json',
asyn: false,
data: { keyword: text },
complete: function(data) {
var convert = Object.keys(data).map(function(k) {
callback([data[k]]);
});
}
});
}
}))
我想在Jquery的回调中得到api响应。返回的
数据
不是对象的字符串。您需要首先解析它:
使用以下命令:
data = JSON.parse(data);
也可以使用jquery解析json:
$.parseJSON( data);
也可以使用success
代替complete
问题解决:
我完全被成功取代了。谢谢@madforstrength
每个增加了美元
success: function(data) {
var res = new Array();
var counter = 0;
$.each(data, function(index, element) {
//callback([element.name]);
res[counter] = element.name;
counter++;
});
callback([res]);
}
我只是通过回调得到了回复。您是否尝试过使用success而不是complete?让我们继续,把标准排除在外。(我会选择PDO。至少阅读该链接上的前两个答案。非常有用。)另外,@madforstrength是的,通过使用success,我得到了[object object]作为响应。@Terminus是的,我知道mysql*函数不受欢迎,实际上这是我以前的项目,现在我正在对其进行更改,很快将从mysql转换到mysqli。