【问题标题】:$_REQUEST works, but $_POST doesn't -$_REQUEST 有效,但 $_POST 无效 -
【发布时间】:2014-09-03 01:22:24
【问题描述】:

感谢您分享我的头痛 - 这是简短的说明:

最近继承了一个编码不佳的 WordPress 网站 - 它利用了 WP Contact Form 7 -

我删除了所有的 WP-CF 代码(因为 WordPress 在交给我之前已经被删除了)——只是为了制作一个简单的补丁脚本并继续实际工作。

我用这个替换了 WPCF 脚本:(使事情对我来说尽可能简单):

jQuery(document).ready(function() {
 $ = jQuery;
 console.log("Ready");
 $("#quack-button").click(function(e) {
   console.log("Quack"); 
   e.preventDefault();
   e.stopPropagation();
   POSTDATA = $.param($("#quack-form").serializeArray());
   $.ajax({
     method : "POST",
     url : "http://www.domain.com/contact.php",
     data : POSTDATA,
     success : function(response) {
      console.log(response);
      alert("Thank you ! We'll get in touch as soon as we can -! ");
     }
   });
 });
});

但是,在尝试了 $.paramserialize 的许多不同形式/组合之后 - 服务端脚本继续返回一个空白数组....

print_r($_POST);

但是,当我将其更改为 print_r($_REQUEST) - 一切正常,很好....

现在,这可能会以什么方式发生?我错过了哪些可能会造成这种情况的盲点......?

这是我一段时间以来处理过的最令人困惑的事情......我很感激任何人都可以对此表示理解......

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    如果您想以$_POST 发送,请更改此行:

    method: 'POST'
    

    到这里:

    type: 'POST'
    

    根据docs,就是这样设置的。

    类型(默认:'GET'
    类型:字符串
    要发出的请求类型(“POST”或“GET”),默认为“GET”。 注意:这里也可以使用其他 HTTP 请求方法,例如 PUT 和 DELETE,但并非所有浏览器都支持。

    【讨论】:

    • 真的吗?他们什么时候改变的??
    • @rm - 除非它期望设置类型并且默认设置为否则。那么它就很有意义了
    • 对,对,对 - 我发誓我已经使用 method 很长时间了,现在......
    • method 用于 HTML 表单,type 用于 jQuery 的 AJAX 包装器
    • 要明确,因为您定义的方法不是类型,所以类型默认为 GET 如上面 Ghost 的回答中所述,因此您可以使用 $_GET 或 $_REQUEST 访问 PHP 中的变量
    猜你喜欢
    • 2021-02-21
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2012-05-08
    • 2017-03-15
    • 2014-10-30
    • 2011-03-08
    相关资源
    最近更新 更多