我试图将我的js中的一些数据发布到一个php脚本,这个脚本不是使用ajax的控制器,但是我无法让它工作。我把脚本放在app/Classes
中这是我到目前为止所做的事。
我的Javascript:
$.ajax({
url:'apps/Classes/TheScript.php',
method: 'POST',
dataType: 'json',
data: {data: 'some data'}
});
TheScript.php
namespace App\Classes;
class TheScript{
public function get() {
return $_POST['data'];
}
}
我试着在我的控制器中使用它:
use App\Classes\TheScript;
class MyController extends Controller {
function home(){
$script= new TheScript();
$data = $script->get();
return view('home',['data' => $data]);
}
}
当我运行它时,我在TheScript.php get()函数中得到错误Undefined index: data
。
我的问题是,有没有办法引用另一个不是我的控制器的脚本ajax网址?我怎样才能做到这一点?谢谢
答案 0 :(得分:1)
你可以将你的请求直接连接到你的php脚本,作为关闭连接到Laravel路线,如下所示:
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]);
});
答案 1 :(得分:0)
(假设您使用的是apache而public/
是DocumentRoot
)
如果要访问DocumentRoot之外的文件,则应使用Alias
。
<VirtualHost *:80>
#...
DocumentRoot "YOUR_PATH_/public"
Alias /app YOUR_PATH_/app
#...
</VirtualHost *:80>
现在您可以访问app/Classes/TheScript.php
更改TheScript.php
以返回一些数据。
<?php
$data = $_POST['data'];
echo json_encode($data);
将ajax请求网址更改为:'/app/Classes/TheScript.php'