如何从Ajax到Laravel API Controller检索参数

时间:2018-10-04 12:43:36

标签: php ajax reactjs laravel

我有一个需要字符串参数的API。我想将查询参数带到控制器并在那里处理。我尝试了$ajax_data = Input::get('query');但是没有用。搜索了相同的问题,但找不到合适的答案。 当前错误为$ ajax_data 为空

我的Ajax请求:

const sendAPIRequest = function (csrf, f) {
    $.ajax({
        async: false,
        url: 'api/apitest',
        method: 'get',
        data:{
            query:"select?facet=on&q=*:*&rows=1&json.facet={Categories:{type:terms,field:price,limit:3}}"
        },
        beforeSend: function (xhr) {
            xhr.setRequestHeader('Authorization', 'Bearer ' + tkid);
            xhr.setRequestHeader('Accept', 'application/json');
            xhr.setRequestHeader('X-CSRF-TOKEN', csrf.trim());
        },
        success: function (data) {
            f(data);
        },
        error: function(xhr) {
            //Do Something to handle error
        }
    });
};

我的控制器API部分:

public function apitest(){
    $ajax_data = Input::get('query');
    $user_type = UserAuthorizationHelper::user_authorization();
    if ($user_type == Authorities::EDIT_ORGANISATIONS) {}
    $query = new GuzzleHttp\Client();
    try {
        $response = $query->request('GET',SolrController::$url.$ajax_data);
    } catch (GuzzleHttp\Exception\GuzzleException $e) {}
    $data = $response->getBody()->getContents();
    return response()->json(json_decode($data));
}

1 个答案:

答案 0 :(得分:1)

您在此行遇到问题:

$ajax_data = Input::get('query');

发出请求时,Request对象随数据一起发送。

因此,与其将Input替换为Request的对象,您将获得所需的输出。

类似这样的东西:

// Don't forget to import the Request's namespace
public function apitest(Request $request)
{
    $ajax_data = $request->get('query');

    // ... Rest of your code
}