API Foursquare через Axios (Ajax) в Laravel не возвращает никаких данных (внутренняя ошибка сервера 500) - PullRequest
0 голосов
/ 10 октября 2019

Поэтому я пытаюсь получить информацию о компании через API Foursquare после того, как пользователь введет название компании и название места. Например: «Охотники» и «Брюссель» должны получить сведения об этом бизнесе через API Foursquare, а затем вернуть их.

До сих пор я пытаюсь сделать это через Axios, чтобы сделать Ajax-вызов в рамках Laravel. .

ajax.js - Вызов Axios:

//Ajax function to get company details when the getCompanyDetails() function is called on a btn click
function getCompanyDetails(){

    //Get company name and location from form
    let businessName =  document.querySelector('#businessName').innerHTML;
    let businessLocation = document.querySelector('#businessLocation').innerHTML;

    //Make the actual API GET request
    axios.post('/getcompanydetails', {
        params: {
          businessName: businessName,
          businessLocation: businessLocation 
        }
    })
    .then(res => {
        console.log(res);
        console.log(res.data);

        //Add response data to empty form fields
    })
    .catch(function (error) {
        //Log request error in console, maybe also show onpage?
        console.log(error);
    })

}

web.php - Маршрутизация

Route::post('/getcompanydetails', 'AjaxController@getCompanyDetails'); //Route for ajax call made from JS file ajax.js

AjaxController.php - Контроллер, обрабатывающий запрос на жадность к API для ajaxзвонки

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;

class AjaxController extends Controller
{
    //Make Foursquare API request with Guzzle!
    public function getCompanyDetails() {

        //Get params back from the Axios get Request
        $params = json_decode(file_get_contents("php://input"),true);
        $location = $params['businessLocation'];
        $companyName = $params['businessName'];

        //Setup actual Guzzle request
        $client = new Client();
        $result = $client->request('GET', 'https://api.foursquare.com/v2/venues/search', [
            'query' => [
                'client_id' => env('FOURSQUARE_CLIENT_ID'),
                'client_secret' => env('FOURSQUARE_SECRET_ID'),
                'v' => "20191009",
                'near' => $location,
                'query' => $companyName,
                'limit' => 1
            ]
        ]);

        //Return $result in JSON format to ajax.js
        return response()->json($result);

     }
}

1 Ответ

0 голосов
/ 10 октября 2019

Как сказал Сали 3301, я должен был проверить вкладку сети: сеть -> вкладку предварительного просмотра в инструментах Chrome Dev. Это говорит о том, что индекс businessLocation не определен.

Решение: В ajax.js я удалил параметры{} вокруг моего фактического имени и параметров местоположения, и это останавливает внутреннюю ошибку 500.

Как таковой:

axios.post('/getcompanydetails', {
          businessName: businessName,
          businessLocation: businessLocation
    })
...