2016-03-24 5 views
1

Ich versuche, einige Daten von meinem js zu einem PHP-Skript, das ist kein Controller mit Ajax, aber ich kann es nicht zum laufen zu bringen. Ich legte das Skript in app/Classes
Hier ist was ich bisher getan habe.

Mein Javascript:
$.ajax({ url:'apps/Classes/TheScript.php', method: 'POST', dataType: 'json', data: {data: 'some data'} });

TheScript.php
POST Daten von js zu PHP-Skripten anders als Controller in Laravel

namespace App\Classes; 
class TheScript{ 
    public function get() { 
     return $_POST['data']; 
    } 
} 



Ich habe versucht, es in meinem Controller wie folgt zu verwenden:

use App\Classes\TheScript; 
class MyController extends Controller { 
    function home(){ 
    $script= new TheScript(); 
    $data = $script->get(); 
    return view('home',['data' => $data]); 
    } 
} 



Als ich dies ausführen, Ich bekomme den Fehler Undefined index: data in TheScript.php get() -Funktion.
Meine Frage ist, gibt es eine Möglichkeit, auf ein anderes Skript zu verweisen, das kein Controller von meiner Ajax-URL ist? Wie kann ich das erreichen? Danke

+0

In welcher Datei ist die MyController-Klasse gespeichert? –

+0

Es wird im Verzeichnis 'app \ Http \ Controllers' gespeichert –

+0

Was sagt' var_dump (file_get_contents ('php: // input')) 'sagen? – Slytherin

Antwort

1

Sie können Ihre Anfrage direkt an PHP-Skript angebracht als Verschluss auf eine Laravel Route wie folgt verdrahten:

js:

$.ajax({ 
    url: 'apps/classes/thescript', 
    method: 'POST', 
    dataType: 'json', 
    data: {data: 'some data'} 
}); 

routes.php

Route::post('apps/classes/thescript', function() 
    { 
    $data = Input::get('data'); 
    $script = new TheScript; 
    $script->data = $data; 
    $script->save(); 
    return view('home',['data' => $data]); 
    }); 
+0

Wenn ich TheScript als eine Instanz deklear, wie bekomme ich die "$ data" wertvoll? Muss ich diese Variable zurückgeben? –

+1

Sie können Ihre Klasse instanziieren und $ Daten hinzufügen, die von Ajax-Aufruf als seine Eigenschaft empfangen werden. Siehe meine bearbeitete Antwort. – Malvolio

+0

Das funktioniert. Vielen Dank –

0

(Angenommen, Sie Apache verwenden und public/ ist Sie DocumentRoot)

Wenn Sie Dateien außerhalb des DocumentRoot zugreifen möchten, sollten Sie Alias verwenden.

<VirtualHost *:80> 
    #... 
    DocumentRoot "YOUR_PATH_/public" 
    Alias /app YOUR_PATH_/app 
    #... 
</VirtualHost *:80> 

Jetzt können Sie die app/Classes/TheScript.php zugreifen

ändern TheScript.php einige Daten zurückzukehren.

<?php 

$data = $_POST['data']; 
echo json_encode($data); 

Ändern Sie die Ajax-Request-URL zu: '/app/Classes/TheScript.php'

Verwandte Themen