$ .post没有发布数据

时间:2013-09-10 16:12:59

标签: php javascript jquery ajax

这是我的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] => ) 如果有人能告诉我错误的话。

2 个答案:

答案 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构造的其他示例:

A simple example

More complicated example

Populate dropdown 2 based on selection in dropdown 1