2015-11-02 2 views
1

Я в значительной степени новичок в программировании. Начиная с нескольких недель я использую структуру Laravel. До сих пор я использовал ajax и перенаправления для доступа к функциям контроллера через Routes. Кто-то сказал мне, что неправильно использовать перенаправления и так много аяксов в Views. Итак, как я могу назвать эти функции и все механики надлежащим образом? Я прочитал документацию не в первый раз, но я все еще не понимаю. Может кто-нибудь объяснить это мне немного, пожалуйста?Laravel отличился сценарий механики называют

Это пример того, как использовать представления с контроллером. viewfile.blade.php:

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

    }, 

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

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

маршруты:

Route::post('/ineedthisfunction', '[email protected]'); 

контроллер:

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

Я делаю это каждый раз, мне нужно использовать любой код PHP. Или я пишу его во взглядах. Они говорят, что я ошибаюсь. Что мне делать тогда?

Иногда вместо AJAX я просто сделать: «заголовок (» место:/ineedthisfunction "), но я думаю, что это ужасно идея

+0

Просьба предоставить образец кода, который у вас есть, который иллюстрирует ваш вопрос. Трудно точно сказать, что вы просите –

+0

@watcher Хорошо, извините за это. Уже отредактирован – divHelper11

ответ

1

Вы упомянули переадресацию в вашем вопросе, но я не вижу. перенаправляет ваш метод контроллера.В общем случае, если вы собираетесь сделать вызов AJAX, отправка ответа на перенаправление не принесет вам никакой пользы. Сам браузер не получит перенаправление и перейдет к пользователю новая страница, ваши обратные вызовы Javascript будут инициироваться с кодом состояния 301 (или 302, в зависимости). Взятый таким образом, перенаправление в ответ на запрос AJAX просто не имеет никакого смысла.

У вас есть шанс в вашем contr oller, чтобы сделать выбор, однако, о том, что нужно вернуть. Является ли запрос запросом 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'); 
} 

Без некоторых более контекста того, что вы пытаетесь сделать, я боюсь, что я не могу быть более точным.

+0

Спасибо за ваш ответ! Думаю, мой вопрос путается. Я имею в виду, что я не знаю, как работать с фреймворком. Я знаю, что в представлениях у нас есть взгляды, а в контроллере - скрипты и механики. Поскольку мне нужно использовать эти скрипты и функции на каждом из нескольких дорожек, я писал их в документах View или называл их, никто не знает, почему AJAX или любые другие методы, потому что я не знаю, как к нему по-другому. Мне кажется, это довольно просто. Просмотры> Ajax> маршруты> контроллер> ответ. Но я злоупотреблял им и делал это, когда он не нужен, я не знаю других способов – divHelper11

Смежные вопросы