$ _REQUEST有效,但$ _POST没有 -

rm-*_*nda 2 php ajax wordpress jquery

感谢您分享我的头痛 - 这是短篇小说:

最近继承了一个编码不好的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 -! ");
     }
   });
 });
});
Run Code Online (Sandbox Code Playgroud)

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

print_r($_POST);

然而,当我改变它print_r($_REQUEST)- 它一切正常,很好......

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

这是我在一段时间内处理过的最令人困惑的事情......我感谢任何人都可以对此提出任何理解......

Kev*_*vin 8

如果要将其发送为$_POST,请更改此行:

method: 'POST'
Run Code Online (Sandbox Code Playgroud)

对此:

type: 'POST'
Run Code Online (Sandbox Code Playgroud)

根据文档,这就是设置它的方式.

键入(默认值:'GET')
类型:String
类型的请求,使("POST"或"GET"),默认是"GET".注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们.

  • 方法用于HTML表单,类型用于jQuery的AJAX包装器 (3认同)