Я создал страницу для обновления записи. Я хочу передать идентификатор студента с одной страницы на другую. Я пытаюсь отправить его через window.location, но он не работает. В ajax я попытался перейти на другую страницу, но в этом тоже не удалось. Как я могу передавать данные и получать на другой странице, не показывая в строке запроса? Код ajax – это
var id = $(this).data('username'); $.ajax({ var id = $(this).data('username'); $.ajax({type: "POST", cache: false, data: id, url: "Update.php", success: function(dto) { //but I do not require this return call I just // want to pass the data to update.php } }); //this is the code where the button is being clicked <table class="table table-condensed" > <thead style="background-color:#665851" align="center"> `<tr> <td style="color:white">Roll No</td> <td style="color:white">Name</td> <td style="color:white">Department</td> <td style="color:white">Click To Update</td> </tr> </thead> <tbody style="background-color:whitesmoke; border:initial" id="tblBody" align="center"> <?php $database="firstdatabase"; //database name $con = mysqli_connect("localhost","root" ,"");//for wamp 3rd field is balnk if (!$con) { die('Could not connect: ' . mysql_error()); } mysqli_select_db($con,$database ); $state = "SELECT rollno ,name, dept FROM student ;"; $result = mysqli_query($con,$state); $output = 1; $outputDisplay = ""; $noRows = mysqli_affected_rows($result); if($result) { $num = mysqli_affected_rows($con); //$row = mysqli_fetch_array($result,MYSQLI_NUM); while ($row = mysqli_fetch_array($result)) { $r = $row['rollno']; $n = $row['name']; $d = $row['dept']; $outputDisplay .= "<tr><td>".$r."</td><td>".$n."</td><td>".$d."</td><td align='right'> <button type='button' name='theButton' value='Detail' class='btn' id='theButton' data-username='$r'> <img src='edit.jpg'/></button> </td> </tr>"; } } else { $outputDisplay .= "<br /><font color =red> MYSql Error No: ".mysqli_errno(); $outputDisplay .= "<br /> My SQl Error: ".mysqli_error(); } ?> <?php print $outputDisplay; ?> </tbody> </table>
Если обе страницы находятся в одном домене, вы можете использовать localStorage
, событие storage
для передачи данных между html
документами
На второй странице
window.addEventListener("storage", function(e) { // do stuff at `storage` event var id = localStorage.getItem("id"); });
на первой странице
// do stuff, set `localStorage.id` localStorage.setItem("id", "abc");
Когда вы используете window.location, ваша страница переходит на другую страницу. ajax работать на активной странице. Вы не можете использовать.
Как правило, вы можете использовать сеансы для этой переменной $_SESSION
чтобы сохранить ее в сеансе, или вы можете передать это значение через параметр get. И после этого получите этот параметр с помощью $_GET
Или параметр $_POST
если вы хотите отправить форму.
вы можете попробовать использовать файлы cookie
Set the cookie <?php setcookie("name","value",time()+$int); /*name is your cookie's name value is cookie's value $int is time of cookie expires*/ ?> Get the coockie <?php echo $_COOKIE["your cookie name"]; ?>
Заполните <form method="post" [...]>
на первой странице с необходимой информацией; вы можете изменить свой аспект с помощью CSS по желанию.
Когда отправляется <form>
вам нужен только PHP-скрипт / страница, которая использует $_POST
для заполнения новой страницы.
Легче, чем AJAX, если вы попытаетесь перейти от первой страницы ко второй.
Если у вас уже есть форма и вы хотите опубликовать ее в скрипте обновления, вы можете просто добавить идентификатор студента как пример скрытого элемента формы:
<input type="hidden" name="student_id" value="<?php echo $student_id; ?>">
Если вы хотите перенаправить с другой страницы на страницу обновления с идентификатором студента, лучшим способом будет переменная $ _GET . Таким образом, URL-адрес будет выглядеть примерно так: http://domain.com/update.php?student_id=1
И тогда ваш файл update.php будет содержать простую проверку.
if(!empty($_GET['student_id'])) { $student_id = $_GET['student_id']; // Ready to update } else { // Throw 404 error, or redirect to an create page }