-1

这是我现在使用的 javascript

<script>
    $( document ).ready(function() {
        var namer = sessionStorage.getItem("namer");
        $.ajax({
            type: "POST",
            url: "Antibiotics2.php",
            data: { 'name': namer }
        }).done(function( msg ) {
            alert( "Data Saved: " + msg );
        });
    });
</script>

这是php:

<?php echo $_POST['name']; ?>            

它抛出一个错误并说找不到索引“名称”。

4

5 回答 5

2

您没有告诉 PHP 您要发送的变量的名称:

$.ajax({
            type: 'post',
            url: 'Antibiotics2.php',
            data: { 'namer': namer }
        });
});

你会想要$_POST在 PHP 端,引用变量名:

<?php echo $_POST['namer']; ?>
于 2013-05-05T22:16:28.837 回答
1

你正在做一个 post call,所以你需要使用 $_POST 而不是 $_GET。此外,对字符串键使用引号

echo $_POST['namer'];
于 2013-05-05T22:14:38.083 回答
1

由于您正在发出发布请求,因此您必须使用它$_POST来检索数据,还必须将数据作为键/值对发送,例如

<script>
$(document).ready(function() {
        var namer = sessionStorage.getItem("namer");
        $.ajax({
            type: 'post',
            url: 'Antibiotics2.php',
            data: {namer:namer}
        });
});
</script>

php

<?php echo $_POST['namer']; ?>
于 2013-05-05T22:16:22.963 回答
0

问题中发布的 Ajax 代码对我有用。但我正在使用 Java 和我的东西

<?php echo $_POST['namer']; ?>

是 php 的等价物

<%= request.getParameter("namer") %>

在 JSP 中

请打开 firebug 或 chrome 开发人员工具并查找您的 Ajax 请求发送的整个请求参数。

希望这可以帮助。

于 2013-05-06T05:52:36.700 回答
0

好吧,我已经复制了您的设置,并且每次我都能够检索 $_POST 中设置的变量。正如您所说,在类似问题中正确捕获了会话,我也避免修改名称。

通过将 namer 变量设置为 undefined 或尝试检索不存在的值,我能够重现该错误。

因为只要设置了变量命名器,我就能够发送它,那么您将不得不做几件事。

  1. 检查是否设置了 namer 变量,可能是客户端和服务器端。那是在 javascript 中,您将测试变量是否未定义,或者在 php 中,您将检查是否设置了 $_POST['namer']。

  2. 您的会话可能会过期,因此您正在尝试检索一个当然不再存在的值,这可能取决于您使用的库或您在创建会话时声明的设置

在这两种情况下,您都会遇到相同的错误,通过执行一些逻辑,您将避免此错误。

服务器端检查 - PHP:

if(isset($_POST['namer'])){
    echo $_POST['namer'];
}else{
    echo "session capture unsuccessful";
}

客户端检查 - Javascript:

var namer = sessionStorage.getItem("namer");

if (typeof namer === "undefined")
    console.log("your session is not set");
} else{
    // you could place your ajax request here
    // or you could set the namer variable to a default value
}

如果可能,请在本地开发您的 Web 应用程序,因为它更容易调试,并且作为最后一点,使用 console.log(yourError) 进行调试可能比使用 alert(yourError) 更容易。

于 2013-05-06T08:51:19.590 回答