я хочу автоматически вызывать функцию в laravel PHP без обновления страницы - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть функция в контроллере la-ravel, которую я использую для получения электронной почты из моего почтового ящика с помощью клиента IMAP, но я хочу всегда получать новое сообщение без необходимости обновлять sh веб-страницу, и я не знаю, как получить это сделано, пожалуйста, я прошу о помощи, ниже приведен мой код функции;

public function mail()
    {
        $last = DB::table('mails')->latest()->first();
        $oClient = Client::account('default');
        $oClient->connect();
        $oFolder = $oClient->getFolders('Gmail.unread');
        /*$date=$last->date;
        $date=Carbon::createFromFormat('Y-m-d', $date)->format('d.m.Y');*/
        foreach($oFolder as $oFolder){ 
            // dd($oFolder);
            try {
                    $message = $oFolder->query()->from('xxxxxxgmail.com')->since('25.04.2020')->get(); 
                    $msg=$message->get('items');

                    if ($msg='null') {
                         $mails=mail::where('status',1)
                    ->get();
                     return view('mail', compact('mails'));
                    }

                } 
                catch (ModelNotFoundException $exception) 
                {
                     $mails=mail::where('status',1)
                    ->get();
                     return view('mail', compact('mails'));
                }
                foreach($message as $message){
                    $message= $message->getTextBody();
                    $calling= preg_match("/Calling number(.*), /", $message,$matches); 
                    $calling=preg_match("/ (.*), /", $matches[1],$match); 
                    $calling=$match[1]; 
                    $messages=str_replace("\r\n\r\n", '', $message); 
                    $callback= preg_match("/Callback phone(.*)C/", $messages,$cb); 
                    $callback = ltrim($cb[1], '?');  
                    $name= preg_match("/name(.*)C/", $messages,$cb); 
                    $result=$cb[1]; 
                    $name= preg_match("/(.*)C/", $result,$cb); 
                    $name=ltrim($cb[1], '?'); 
                    $callcount= preg_match("/Calling number(.*), /", $messages,$matches);
                    $callcount=preg_match("/,(.*),/", $matches[0],$match);
                    $callcount=preg_match("/:(.*)/", $match[1],$match);
                    $callcount=$match[1]; 
                    $date= preg_match("/Date(.*) /", $messages,$cb); 
                    $date=preg_match("/:(.*),/", $cb[1],$match); 
                    $date=$match[1]; 
                    $callscript= preg_match("/Call script(.*) /", $messages,$cb);
                    $callscript =$cb[1]; 
                    $date=strtotime($date);
                    $date = date('Y-m-d',$date);
                    $mail=new mail();
                    $mail->date=$date;
                    $mail->name=$name;
                    $mail->calling_no=$calling;
                    $mail->callback_phone=$callback;
                    $mail->message=$callscript;
                    $mail->save();
                    $mails=mail::where('status',1)
                    ->get();
                     return view('mail', compact('mails'));
                }
                     }


    }

, что я хочу, это код java script / AJAX, чтобы автоматически всегда вызывать эту функцию без обновления веб-страницы

1 Ответ

0 голосов
/ 24 апреля 2020

Вы должны использовать get метод, подобный этому, и получить новое сообщение с периодом времени, а затем использовать, как этот

function getNewMessage() {
    $.ajax({
        type: "GET",
        url: "{{url('')}}/mail",
        success: function (response) {
            console.log(response);
        }
    });     
}

setTimeout(getNewMessage, 1000); // 1000 indicated 1 second
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...