привет это мой код для page.php
<?php session_start(); ?> <script type="text/javascript" src="js/jquery-1.8.2.js"></script> <script type="text/javascript" src="js/jquery.colorbox.js"></script> <script type="text/javascript" src="js/new-landing.js"></script> <script> var ans1 = "home"; function aa(){ $.post("ajax.php", { "ans": "test" }, function(data){ alert("Posted"); }, "html"); }; </script> <a href="#" id="q1" onClick="javascript:aa();" >click</a>
и именно там я хочу посмотреть, будут ли мои данные опубликованы.
<?php session_start(); $te = $_POST['ans']; $_SESSION['demo'] = $te; echo "<pre>".print_r($_SESSION,'/n')."</pre>"; ?>
когда я нажимаю тег привязки. появится окно предупреждения. но когда я обновляю страницу ajax.php. он показывает ошибку..Notice: Неопределенный индекс: ans in
C:\xampp\htdocs\healthqueens\hello\ajax.php on line 3
и печать сеанса также пуста. Array ( [demo] => )
Пожалуйста, если кто-нибудь может показать мне ошибку.
но когда я обновляю страницу ajax.php. он показывает ошибку
Похоже, вы хотите установить переменную сеанса при публикации значения и получить переменную сеанса в противном случае:
<?php session_start(); if (isset($_POST['ans'])) { $te = $_POST['ans']; $_SESSION['demo'] = $te; } echo "<pre>".print_r($_SESSION,'/n')."</pre>"; ?>
$.post
и $.get
– это только сокращенные версии более структурированного $.ajax()
, поэтому я предпочитаю использовать последний. Дополнительная структура держит меня прямо.
Поскольку вы все равно используете jQuery, я бы перестроил ваш код следующим образом:
$('#q1').click(function() { var test = "Hello there"; $.ajax(function() { type: "POST", url: 'ajax.php', data: 'ans=' +test+ '&anothervarname=' + anothervarvalue, success: function(recd_data) { alert('Rec'd from PHP: ' + recd_data ); } }); });
Обратите внимание, что строка data:
это, например, цели и не соответствует вашему коду – просто показывая вам, как передавать переменные на стороне PHP.
Конечно, вышеупомянутое включает удаление встроенного javascript – никогда не хорошая идея – из вашего якорного тега HTML, таким образом:
<a href="#" id="q1" >click</a>
Кроме того, на стороне PHP вы можете проверить, что все работает, добавив тест вверху. Соответствуя data:
строка в примере кода AJAX, она будет выглядеть так:
ajax.php
<?php $a = $_POST['ans']; $b = $_POST['anothervarname']; $response = '<h1>Received at PHP side:</h1>'; $response .= 'Variable [ans] has value: ' . $a . '<br>'; $response .= 'Variable [anothervarname] has value: ' . $b . '<br>'; echo $response;
Важно: обратите внимание на использование echo
, а не return
, чтобы отправить значения обратно в сценарий AJAX.
Также обратите внимание, что вы должны иметь дело с материалом, возвращаемым с PHP в AJAX success:
function ONLY . Если вам нужен доступ к этим данным за пределами success:
функция, вы можете вставить данные в скрытый элемент <input type="hidden" id="myHiddenInput">
, например:
success: function(recd_data) { $('#myHiddenInput').html(recd_data); }
Вот несколько дополнительных примеров простых конструкций AJAX:
Простой пример
Более сложный пример
Population dropdown 2 на основе выбора в выпадающем списке 1