【问题标题】:Undefined index when passing variable from jquery to php将变量从 jquery 传递到 php 时未定义的索引
【发布时间】:2013-10-14 17:29:52
【问题描述】:

我正在尝试使用 jquery 和 ajax 将 html 文件中的变量传递到我想要处理它的 php 文件。我有两个测试文件:

ajax.html

<html>
<head>
  <title>ajax</title>
  <script type="text/javascript" src="jquery.js"></script>
  <link href="ajax.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript">
    $(document).ready(function () {
      $("#call_back").click(function () {
        $.post(
          "ajax.php", {
            value: $("#input_text").val()
          },
          function (data) {
            $("#response_text").val(data);
          }
        );
      });
    });
  </script>
</head>

<body>
  <div id="wrapper">
    <h3>Ajax</h3>
    <div class="entry-wrapper">
      <h4>Data to send to the server</h4>
      <input type="text" size="50" id="input_text" />
      <input type="button" value="Ajax Callback" id="call_back" />
    </div>

    <div id="response_wrapper">
      <textarea id="response_text"></textarea>
    </div>
  </div>
</body>
</html>

和 ajax.php

<?php
    $value = $_POST['value'];   
    echo "Returned from the server: $value";    
?>

html 工作正常。如果我在文本字段中输入一个值,它将被传递到 php 文件,处理并发送回以显示在 textarea 中。 我查看了 firebug,控制台中的 post 标记显示了我输入的值。

问题是我希望能够使用 php 文件中的变量进行算术运算或使用它运行 sql 查询,但是当我打开 php 文件时它显示为未定义的索引。

我查看了将变量从 jquery 传递到 php 的多个线程,但仍然没有找到答案。我不知道问题是什么。非常感谢您的建议。谢谢。

【问题讨论】:

  • 使用 var_dump($_POST);检查 POST 是否正常工作
  • 如果您可以将信息传递回客户端,您的 AJAX 似乎工作正常。你的PHP哪里出了问题?
  • 我使用了 var_dump($_POST) 并且它返回数组 (size=0) 为空并且 SCREAM:错误抑制被忽略
  • 我使用了视频教程中的文件,并尝试了来自 api.jquery.com 的与 ajax 相关的示例,结果相同
  • 我还测试了一个表单提交,我在文本字段中输入了一个值并将其提交给 php.ini。使用 echo 显示值,效果很好

标签: php jquery ajax variables


【解决方案1】:

如果我正确理解您的问题,您需要在您的网址中定义变量。 示例:

    http://yoursite.com/ajax.php?value=yourdata

这样,当您打开文件时,您定义的值就是您对 ajax 请求所做的一切。如果这不是您想要完成的,请尝试重新表述您的问题。

在第 1 条评论后修改:

<?php
    if(isset($_POST['value'])){
        //do whatever in here
       dowhatever();
    }

    function dowhatever() {
        $value = $_POST['value'];   
        echo "Returned from the server: $value";
        if(value == 'data') {
            //run query
        }//end if
    }    
?>

【讨论】:

  • 是的,这将是一种将变量传递给 php.ini 的方法。但是,我应该提到,我需要在触发事件时传递变量。例如,我有多个 div,当我单击一个时,我想传递单击的 div 的 id 或类或名称,然后在 php 中对其进行处理,例如将其存储在数据库中,或从数据库中检索已连接到该 div。
  • 从 php.ini 中的 url 获取数据后,您应该能够对数据执行任何操作。您可以检查是否在 url 中设置了属性,或者是否将其设置为特定值并运行函数。在你的函数中,你可以查询你的数据库或任何你想要的。
  • 一旦您将数据发送到 php 文件,它不会自动存储以供您以后使用,您需要通过将其存储在数据库中来做到这一点。要一遍又一遍地重用相同的值,您可以在 JS 文件上创建一个全局变量并将其设置为您的值,每次在 php 中需要它时,只需在 ajax 中再次发送它。
  • 我现在明白了。当我在浏览器中打开 php 文件时看到未定义的索引错误时,我做出了错误的假设。我认为它不起作用,我也测试过它是错误的。我已经将 ajax 发送的值写入 .txt 文件。就像 Cedric 解释的那样,在通过 ajax 发送以供以后使用时,它不会保存值。代码很好,当然是用户的错。非常感谢你们,你们真的很有帮助!
【解决方案2】:

我假设当你说你可以确认它正在工作时,但是当你直接打开 .php 文件时,它有未定义的索引,那么我会说这是完全有道理的。如果您直接浏览 .php 文件,则不会发送 POST 数据。但是,如果您能够输入一些文本,触发提交,并按计划取回文本,那么它就可以工作了。

【讨论】:

  • 我想到了另一种情况,Wray 可能还意味着为什么他不能在返回后的 html 页面上使用 $value )))
  • 对。但是我怎样才能在 php 文件中访问该变量并对其进行操作
  • 现在访问该变量的方式相同。 $value = $_POST['value'];那么,当你提交它时,它工作正常吗?您将文本发送到 .php 并按计划取回文本?如果是这样,那么您正在“操纵”变量。但正如 Max 所说,如果你想在页面上使用它,你必须对它做一些 Javascript 巫术。
猜你喜欢
  • 1970-01-01
  • 2014-08-29
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 2015-11-13
相关资源
最近更新 更多