获取ajax将字符串变量从javascript传递给php

时间:2013-05-05 22:11:29

标签: php jquery ajax

这是我现在使用的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']; ?>            

它抛出一个错误并说无法找到索引'name'。

5 个答案:

答案 0 :(得分:2)

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

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

你需要在PHP端$_POST,引用变量名称:

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

答案 1 :(得分:1)

您正在进行一次调用,因此您需要使用$ _POST而不是$ _GET。另外,使用字符串键的引号

echo $_POST['namer'];

答案 2 :(得分: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']; ?>

答案 3 :(得分:0)

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

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

的php等价物
<%= request.getParameter("namer") %>
JSP中的

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

希望这会有所帮助。

答案 4 :(得分:0)

我已经复制了您的设置,每次我都能够检索$ _POST中的变量集。我也避免修改名称,因为你声明在类似的问题中正确地捕获了会话。

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

由于我能够发送变量名称,只要它已经设置好,那么你将不得不做几件事。

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

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

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

    服务器端检查 - 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)进行调试可能更容易,而不是警告(yourError)。