2016-01-18 2 views
1

Я пытаюсь передать переменную с одной страницы на другую с помощью ajax. У меня есть проход, но я не знаю, как открыть страницу с этой переменной.Передача переменной с помощью ajax и откройте следующую страницу

Мой реальный код:

<!DOCTYPE html> 
<html lang="pl"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Ajax</title> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 

    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 

<!-- <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>--> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

</head> 
<body> 

<button id="test" class="btn btn-lg btn-primary">Test</button> 

<script> 
    $(document).ready(function() { 

     $("#test").click(function() { 
      var variable = 'AAAaaa'; 
      //alert($(this).attr('id')); 
      $.ajax({ 
       type: "POST", 
       url: 'view.php', 
       data: {"temp": variable}, 
       success: function (data) { 
        alert("success!"); 
       } 
      }); 
     }); 
    }); 

</script> 
</body> 
</html> 

И вторая страница, где я хочу смотреть, что находится в $ _POST таблице

<?php 
$table = $_POST; 
?> 

<pre> 
    <?= print_r($table);?> 
</pre> 

Edit для комментариев:

Не проблема. Вы можете создать функцию обратного вызова внутри события события ajax. При успехе возьмите эти данные из view.php и отправьте его на на вторую страницу с другим вызовом ajax. Все это будет сделано асинхронно и выполнить то, о чем вы просите. - putipong

У меня есть массив в поле зрения. Например:

$array = array(
    "foo" => "bar", 
    "bar" => "foo", 
); 

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

public function actionUuuu() 
    { 
     $request = Yii::$app->request; 
     $array = $request->post(); 

     print_r($array) 
+0

Для этого вам не нужен ajax, передавая значения с одной страницы на другую, какие формы изначально – adeneo

+0

не получили вашего точного требования, что вам нужно .. вам не требуется ajax для перенаправления. будьте краткими, чтобы заполнить вопрос. – ameenulla0007

+0

Что именно вы пытаетесь сделать? Вы пытаетесь перенаправить на другую страницу и передать эту переменную? ИЛИ вы пытаетесь остаться на текущей странице? Почему вы пытаетесь использовать AJAX? Пожалуйста, будьте более конкретными. – CodeGodie

ответ

3

В вашем view.php, вы можете назначить данные таблицы в $_SESSION, а затем получить их позже в вашей второй странице, просто начав сеанс с session_start();

Сессия должна быть запущена на каждой странице, которая требует использования данных сеанса, иначе она не будет работать.

view.php:

session_start(); 
if ($_POST['temp'] == 'AAAaaa') { 
    $_SESSION['tableData'] = $tableData; 
    echo true; 
} else { 
    echo false; 
} 
return; 

Javascript:

$(document).ready(function() { 

    $("#test").click(function() { 
     var variable = 'AAAaaa'; 
     //alert($(this).attr('id')); 
     $.ajax({ 
      type: "POST", 
      url: 'view.php', 
      data: {"temp": variable}, 
      success: function (data) { 
       if (data == 'true') { 
        window.location.replace('secondPage.php'); 
       } 
      } 
     }); 
    }); 
}); 

secondPage.php

session_start(); 
$table = $_SESSION['tableData']; 
+0

Спасибо за ответ. У меня есть большой массив, и я хочу передать этот массив из представления на другой контроллер. Я использую структуру yii2, поэтому я начал с простого примера выше. Я хочу использовать кнопку и ajax для передачи aray другому контроллеру. – vjdj

+0

Не проблема. Вы можете создать функцию обратного вызова в событии успеха ajax. При успехе возьмите эти данные из view.php и отправьте его на вторую страницу с другим вызовом ajax. Все это будет выполняться асинхронно и выполнить то, о чем вы просите. – putipong

+0

Я редактирую свой вопрос о yii.Я не знаю, как это сделать в рамках yii2 – vjdj

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