jQuery $ .post()一个带有.serialize()的表单/我的PHP中的params在哪里?

时间:2016-03-09 06:37:36

标签: php jquery post

我有一个html表单并试图将它与jQuery一起发送到php脚本。在这个脚本中,我正在寻找参数。



$(document).ready(function(){
	
  $("#myselect").change(function(e){
    e.preventDefault();
    $.post("mypath/toscript/",$("#form").serialize(), function(data){
      alert(data);
    });
  });
	
});




我需要所有uri部分。所以我用$_SERVER['REQUEST_URI']获取它。

我要求这样的事情: mypath/toscript/?p1=A&p2=B&p3=C

当我在浏览器中输入此URI时,它的工作方式应该如此。

但是使用上面的jQuery,我只能使用$_SERVER['REQUEST_URI'] mypath / toscript /而不使用params。

使用$ _POST向我展示了婴儿车p1=A&p2=B&p3=C

为什么?使用$.post()进行直接输入

的帖子时的区别在哪里

3 个答案:

答案 0 :(得分:1)

POST没有像GET那样使用请求URL来发送查询字符串。 POST代替在HTTP消息体中发送查询字符串。当您在浏览器中键入查询字符串时,您正在使用方法GET。

Here is an article from W3Schools about it.

这并不意味着您应该切换到使用$.get。使用GET优于POST存在缺点,例如具有长度限制或不太安全。阅读文章以了解更多信息。

要修复代码,您必须选择所需的HTTP方法套件,然后将jQuery和PHP代码对齐,以便它们都使用相同的方法。

答案 1 :(得分:0)

在您的情况下尝试这将解决您的问题..

$.get("mypath/toscript/",$("#form").serialize(), function(data){
  

GET - 从指定资源请求数据..

     

POST - 将要处理的数据提交到指定的资源..

来自 w3school

您应该在没有副作用的请求中使用GET,例如:只是获取一些信息。该请求可以:

  

重复没有任何问题 - 如果浏览器检测到错误   可以静默重试将其结果缓存在浏览器中缓存   代理

答案 2 :(得分:0)

您必须以格式化数组的方式提供序列化,如此

var data = $('#form').serializeArray();

$.post("mypath/toscript/",data , function(data){
    alert(data);
});