Как извлечь параметр из ajax в laravel API Controller - PullRequest
0 голосов
/ 04 октября 2018

У меня есть 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 голосов
/ 04 октября 2018

У вас возникла проблема в этой строке:

$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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...