Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从api回调json数据_Javascript_Php_Jquery_Json_Api - Fatal编程技术网

Javascript 无法从api回调json数据

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

我有自己用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->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。