Laravel区分了脚本机制调用

时间:2015-11-02 18:28:01

标签: php laravel

我在编程方面几乎是初学者。几个星期以来,我一直在使用Laravel框架。到目前为止,我使用ajax和重定向来通过路由到达控制器中的功能。有人告诉我,在视图中使用重定向和很多ajax是错误的。那么如何以正确的方式调用这些函数和所有机制呢?我不是第一次阅读文档,但我仍然没有得到它。有人可以向我解释一下吗?

这是一个如何使用控制器视图的示例。 viewfile.blade.php:

$.ajax({
    type: "POST",
    url: "/ineedthisfunction",
    data: {

    },

        success: function(msg) {
            alert(msg);
        },

        error: function(error) {
            alert('error');
        }
});

路线:

    Route::post('/ineedthisfunction', 'Controller@thisfunction');

控制器:

public function thisfunction(){
return "some returned value from script";
}

每次我需要使用任何PHP代码时,我都会这样做。或者我在视图中写它。他们告诉我两个都错了。那我该怎么办?

有时候我会做的不是ajax:"标题("位置:/ ineedthisfunction");但我认为这是一个可怕的想法。

1 个答案:

答案 0 :(得分:1)

您在问题中提到了重定向,但我在控制器方法中看不到任何重定向。一般来说,如果您打算进行AJAX调用,那么发送重定向响应并不会对您有所帮助。浏览器本身不会接收重定向并将用户导航到新页面,您的Javascript回调将被触发,状态代码为301(或302,取决于)。采取这种方式,重新定向以响应AJAX请求只是没有任何意义。

您可以在控制器方法中做出选择,但是要返回什么。请求是AJAX请求吗?然后返回某事。如果没有,那么您可以轻松返回重定向:

use Illuminate\Http\Request;

// ...

public function thisFunction(Request $request)
{
    if($request->wantsJson()) {
        // Return data to ajax request
        return response()->json(['key' => 'value']);
    }

    return redirect()->to('/some/url');
}

如果没有更多关于你想要完成的事情的背景,我恐怕我不能更具体。