【问题标题】:why can't we access values on server side in POST request?为什么我们不能在 POST 请求中访问服务器端的值?
【发布时间】:2010-10-08 06:49:10
【问题描述】:

我尝试从 jquery ajax 发送请求,其中 contentType 为“text/plain”。我无法访问服务器端的值。我正在使用 php 文件中的 $_POST 数组访问这些值。为什么会这样。

jQuery AJAX 代码:

$.ajax({ 
    type: "POST", 
    data: {o_pass:o_pass,n_pass:n_pass}, 
    url: "changepass", 
    success: function(response) { alert(response); } 
});

服务器端:

$old_pass = $_POST['o_pass']; 
$new_pass = $_POST['n_pass'];

【问题讨论】:

  • 嗯,你得到了什么
  • 您是否尝试过使用 Firebug 或 HTTPFox(或类似工具)查看浏览器实际发送的内容?

标签: php post jquery


【解决方案1】:

因为POST 请求的内容类型应该是application/x-www-form-urlencodedmultipart/form-data,以便服务器知道它正在处理什么。

以纯文本形式发送请求的原因是什么?

【讨论】:

  • 我无法发送带有 ' ' 或 '+' 的数据。它们在服务器端发生变化,空间 -> 加号和加号 -> 空间。所以,我试图以纯文本形式发送数据。
  • 普通 POST 请求将毫无问题地处理这些字符。请发布您的 jQuery ajax 代码,以便我们了解您是如何执行请求的。
  • jQuer Ajax 调用是这样的: $.ajax({ type: "POST", data: {o_pass:o_pass,n_pass:n_pass}, url: "changepass", success: function(response ) { var result = eval(response); alert(result[1]); window.location = "/my_profile"; } });在服务器端,我接受如下值: $old_pass = $_POST['o_pass']; $new_pass = $_POST['n_pass'];
  • 好吧,很抱歉,但我不确定 — 我刚刚尝试了您的代码,将 o_passn_pass Javascript 变量都设置为 test+ saf,并将它们都发布了没有问题。我怀疑这里还有其他事情发生,但您需要在问题中提供更多详细信息。我现在已经编辑了这个以包含您的代码,也许其他人可以提供帮助。
  • 最初我尝试使用以下命令将参数发送到服务器端:数据:“o_pass="+o_pass+"&n_pass="n_pass,它不起作用,然后我将其更改为数据:{o_pass: o_pass,n_pass:n_pass},它工作得很好,我的意思是所有的值都正确地发送到服务器,为什么会这样?上述两种方法有区别吗?
【解决方案2】:

在执行标准发布请求时,您不必担心内容类型。

尝试将您的网址:changepass 更改为 changepass.php。您可能有一个名为 changepass 的 html 或 htm 文件,您的服务器正在处理您的发布请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多