如何将数据从js发布到除laravel中的控制器之外的php脚本

时间:2016-03-24 10:08:19

标签: javascript php ajax laravel

我试图将我的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网址?我怎样才能做到这一点?谢谢

2 个答案:

答案 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'