【问题标题】:PHP Ajax works with get but not with postPHP Ajax 适用于 get 但不适用于 post
【发布时间】:2014-07-29 23:41:44
【问题描述】:

我正在尝试通过 ajax post 发送一些数据,并在服务器上执行一些任务,然后返回结果。这是一个前任:我已经完成了

  function sometask(id) {
    $.ajax({
        type: 'POST',
        url: '/ajaxPost/task/',
        data: {title: 'test', text: 'test2'},
        dataType: 'text',
        success: function(data) {
            console.log('success');
            console.log(data);
        },
        error: function () {
            console.log('failed');
        }
    });
  }

在服务器端

<?php
var_dump($_POST);
exit;

在 html 上做点什么

预期结果是通过 ajax 发送的数据以数组形式返回。但它返回空数组。

在 ajax 和服务器端将类型更改为 'GET' 时 var_dump($_GET);返回数据。

那么为什么它适用于 get 而不是 post,我哪里出错了?

【问题讨论】:

  • 别听@kiamnemr,你的代码没有问题。我会建议使用非目录资源,即代替/ajaxPost/task/,尝试/ajaxPost/task/index.php(或您的脚本名称实际上是什么)
  • 感谢 Phil,但我使用路由协议进行访问,因此文件路径与我发送数据的 url 完全不同。
  • @AbhishekSalian 检查浏览器开发者控制台中的 Network 选项卡。您应该会看到 AJAX POST 请求和后续响应
  • @AbhishekSalian 它确实有效,因为我已经尝试过您的示例完全相同,您可以尝试类似http://www.yoursite.com/AjaxPost/task 的方法吗?还要检查上面菲尔的评论
  • @AbhishekSalian 您的代码或配置中的某些内容正在使用 PRG 模式重定向请求。另请注意,我在第一条评论中确实建议您使用 非目录资源

标签: javascript php jquery ajax post


【解决方案1】:

在谷歌浏览器 F12 网络选项卡中..

查看数据是如何发送的,并与普通的 post 请求进行比较(没有 jquery ajax)

你可能会得到答案

【讨论】:

  • 虽然这是调试问题的好方法,但此答案并未提供(或试图提供)解决方案
【解决方案2】:

我认为这取决于您尝试运行的任务的复杂程度。 $.ajax 函数用于需要更好的错误报告以及您可以访问的其他回调的任务。我通常只运行一个 $.post 函数来完成大多数数据交换。不确定这是否有帮助。

【讨论】:

  • 我试过 $.post 同样的结果。你在说什么错误报告。我在 php 中启用了错误报告,甚至记录错误,在尝试 ajax 提交时没有看到任何错误。
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 2017-01-25
  • 2020-05-26
  • 1970-01-01
相关资源
最近更新 更多