2016-03-26 2 views
1

Я полностью застрял с двух часов и определенно нуждаюсь в вашей помощи. Отказ от ответственности: я не кодер - просто парень, который пытается высмеять идею.Имея трудное понимание переадресации/маршрутизации в laravel

Так что моя страница работает нормально, но я думал о перемещении контента из модального всплывающего окна на фактическую подстраницу. Значение: если пользователь нажимает на кнопку, некоторые точки данных с текущей страницы собираются и передаются в другое представление, которое должно отображаться с использованием точек данных в качестве входных данных.

EDIT: Для уточнения: кнопка находится на /results.php, где данные генерируются динамически. Метод должен взять несколько точек данных, отсюда и создать новый вид и сделать его на /buy.php или, может быть, в /buy/custom.php

Мои мысли:

  1. Normal редирект без параметров: Внутренний Ссылка
  2. Обновление страницы-контента без редиректа, но с параметрами: Ajax

Так комбинируя мои мысли -> использовать AJAX и вернуть новый свежий вид.

Что я пробовал:

$("body").on("click", ".fa-shopping-cart", function() { 

var $para1 = $(this).attr("data1"); 
var $para2 = $(this).attr("data2"); 
var $para3 = $(this).attr("data3"); 
var $para4 = $(this).attr("data4"); 

$.ajax({ 
url: "buy", 
data: { 
    a: $para1, 
    b: $para2, 
    c: $para3, 
    d: $para4 
}, 
beforeSend: function (xhr) { 
    var token = $('meta[name="csrf_token"]').attr('content'); 
    if (token) { 
     return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
    } 
}, 
type: "post", 
success: function(response){ 
    console.log(response); 
}, 
error: function(jqXHR, textStatus, errorThrown) { 
     console.log(JSON.stringify(jqXHR)); 
     console.log("AJAX error: " + textStatus + ' : ' + errorThrown); 
} 
});}); 

Routing:

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

Контроллер:

public function buy() 
{ 

    $para1= $_POST['a']; 
    $para2 = $_POST['b']; 
    $para3 = $_POST['c']; 
    $para4 = $_POST['d']; 

    // some magic to output $data 

    return view('pages.buy', compact("data")); 

} 

buy.blade.php существует и отображает $ данные с помощью Еогеасп в петле ,

Так что, когда я в первый раз нажал на кнопку очевидный СЛУЧИЛОСЬ:

представления («pages.buy») регистрируется/отображается в моей консоли в простом HTML и не отображаются в браузере.

Теперь я сижу здесь с двух часов, и я понятия не имею. Я прочитал сообщение в блоге, в котором говорится, что вы не можете перенаправлять запрос ajax. К сожалению, пост не дал никакого намека на то, как это сделать.

Может кто-нибудь мне помочь?

Все лучшее

+0

Вид («pages.buy») регистрируется/отображается в моей консоли в простом HTML и не отображаются в браузере. - но при успешном ответе все, что вы делаете, это просто console.log (ответ) – Hrach

ответ

0

Если вы хотите заменить весь документ с ответом Вы должны использовать документ. пишите, но это не лучшая вещь. Почему бы вам не использовать обычную форму, если вам нужно вернуть представление?

success: function(response){ 
    document.write(response); 
}, 

P.S. если вы хотите также изменить URL-адрес, используйте функции манипулирования историей.

https://developer.mozilla.org/en-US/docs/Web/API/History_API

+0

Можете ли вы использовать форму submit, когда у вас нет формы? Данные отображаются в виде таблицы с 4 точками данных в строке и кнопкой «получить больше информации». Кнопка должна, если щелкнуть, найти 4 точки данных в этой строке и сгенерировать другую страницу. Я рассмотрю ваш ответ. Благодаря! – Tilka

+0

Он отлично работает! Благодаря! – Tilka

0

в методе покупки -

public function buy() 
{ 
    ....//some stuff to get $data 

    $html = view('pages.buy', compact("data"))->render(); 
    return response()->json([ 
     'success' => true, 
     'html' => $html 
    ]) 
} 

в вашей АЯКС функция успеха

success: function(response){ 
    if(response.success) 
    { 
     $('#elementId').html(reponse.html) // or whatever you need 
    } 

}, 
+0

Привет, спасибо за ваш быстрый ответ! Проблема в том, что я не хочу «обновлять» часть страницы с помощью ajax-вызова, я хочу перейти на другую подстраницу. Значение: Пользователь нажимает кнопку на www.example.com/results.php и затем, используя вышеуказанный метод, перенаправляется на www.example.com/buy.php, который отображается на основе некоторых параметров, которые динамически генерируются in /results.php. – Tilka

+0

ОК, поэтому первое, что приходит мне в голову, заключается в следующем: после получения переменной $ data я думаю, что вам нужно поместить ее в сеанс, а затем просто вернуть некоторый успех ответа об отказе, основанный на правильности данных $, и если это правильно в сообщении об успешном аяксе вам просто нужно перенаправить на соответствующую страницу - window.location = "/ buy"; а затем просто прочитайте данные с сеанса – Hrach

+0

Я также рассмотрю ваш ответ. Спасибо за хорошую идею! – Tilka

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