这是我的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页面时。它显示错误。注意:未定义索引:ans in
C:\xampp\htdocs\healthqueens\hello\ajax.php on line 3
并且会话的打印也是空的。
Array
(
[demo] =>
)
如果有人能告诉我错误的话。
答案 0 :(得分:0)
但是当我刷新ajax.php页面时。它显示错误
听起来你想要设置会话变量发布,而获取会话变量,否则:
<?php
session_start();
if (isset($_POST['ans'])) {
$te = $_POST['ans'];
$_SESSION['demo'] = $te;
}
echo "<pre>".print_r($_SESSION,'/n')."</pre>";
?>
答案 1 :(得分:0)
$.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端。
当然,上面的内容包括从您的锚标记HTML中删除内联javascript - 从来不是一个好主意 - 因此:
<a href="#" id="q1" >click</a>
此外,在PHP方面,您可以通过在顶部添加测试来验证事情是否正常。与示例AJAX代码中的data:
行匹配,它看起来像这样:
<强> 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脚本。
另请注意,必须处理仅在AJAX success:
函数中从PHP 返回的内容。如果您需要访问success:
函数之外的数据,那么您可以将数据粘贴到隐藏的<input type="hidden" id="myHiddenInput">
元素中,如下所示:
success: function(recd_data) {
$('#myHiddenInput').html(recd_data);
}
以下是一些简单的AJAX构造的其他示例: