【问题标题】:retrieve data send via ajax post检索通过 ajax post 发送的数据
【发布时间】:2016-01-07 13:55:41
【问题描述】:

我有以下 ajax 代码通过 post 向 php 发送数据:

          checked_id = 10;
          $.ajax({
               url: "/delete_document",
               type: "POST",
               data: {id:checked_id}, // a
               success: function(data, textStatus, jqXHR){
                    alert(data);
                    location.href='/delete_document';
               },
               error: function (jqXHR, textStatus, errorThrown){
                    //alert('Error!')
               }
          });

它成功准备数据,并警告正确的值 (10)。

然后我应该在 php 文件中获取这个值:

$selected_id = $_POST['id'];
var_dump($selected_id);

但是 var_dump 给了我 string(0) ""

我知道,当代码不起作用时,总是我做错了。但是我真的看不出这里的错误。

【问题讨论】:

  • 您是否尝试过var_dump($_POST) 并查看发送的内容?
  • @Saty 这是一个路由的东西,所以这不是问题。文件 delete_document 被识别为 /delete_document。我通过回显一些随机字符串来尝试它。
  • @Saty 为什么?他可能正在使用 url 重写。无论如何,他得到 string(0) "" 作为var_dump 结果,这意味着 PHP 代码正在被解析。
  • @amygrimaldi 您是否在 Firebug(或类似软件)中检查了 id 确实已正确发送到服务器?
  • 所以它工作正常。我看看有什么问题。重定向到'/delete_document' 后,它不再是 POST 调用,并且第二次调用此脚本,这次没有 POST 数据。

标签: php ajax


【解决方案1】:

问题是这段代码完成后你最终看到的不是 POST ajax调用的结果,而是它是行内重定向的结果 p>

location.href='/delete_document';

这会再次调用/delete_document URL,这一次是简单的 GET 请求,没有您期望的 POST 数据。

编辑。

与其进行 ajax 调用并重定向到该页面,不如使用 POST 数据移动到 /delete_document。你不能通过重定向来做到这一点,所以你应该制作一个表单并在 JavaScript 中提交。

这是您尝试执行的操作的示例: JavaScript post request like a form submit

【讨论】:

  • 但他写道,他得到了 10 作为警报输出。
  • 是的,在重定向之前。
  • 如果 var_dump($selected_id);存在于该文件中,那么他如何获得 10 作为警报输出?
  • @RaviHirani 我认为输出是在发布期间,在重定向之前。
  • @dragoste 感谢您指出这一点。但如果不是太多要求,我怎样才能获得 /delete_document 中的值?我必须重定向,因为我应该在哪里获取 id 并做许多其他事情。 (使用 GET 并通过 url 发送值不是一种选择)
猜你喜欢
  • 2018-03-08
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多