$.post 不发布数据

$.post not posting data

本文关键字:数据 布数据 post      更新时间:2023-09-26

这是我下面用于页面.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 type="text/javascript">
    var ans1 = "home";
    function aa(){
        $.post("ajax.php", { "answers": "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 页面时。 它显示一个错误。注意:未定义的索引:ajax 中的 ans.php在第 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 端。

当然,上述内容包括从锚标签HTML中删除内联javascript(从来都不是一个好主意),因此:

 <a href="#" id="q1" >click</a>

此外,在 PHP 方面,您可以通过在顶部添加测试来验证事情是否正常工作。 与示例 AJAX 代码中的data:行匹配,它如下所示:

阿贾克斯.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 构造的其他示例:

一个简单的例子

更复杂的示例

根据下拉列表 1 中的选择填充下拉列表 2