我将这个非常基本的PHP文件上传到www.example.com
(非本地):
<?php
header('Access-Control-Allow-Origin: *');
echo $_POST['var1'];
?>
我在Fiddler中编写了一个简单的测试,如下所示
我得到了空白的结果,没有回来。它应该在TextView
中给我test1234
我使用简单的$.ajax
调用进行了测试,它可以在浏览器中运行。我还上传到另一个域名来测试跨域调用,它也有效。
$.ajax({
type: "POST",
url: "http://www.example.com/test.php",
data: {var1: "test1234"}
}).done(function(msg) {
console.log(msg);
});
但是,如果我将所有内容都交换到GET(php,Fiddler),它就可以了。 那么为什么我不能让Fiddler通过POST参数?
答案 0 :(得分:0)
即使评论中已经有一个非常简短的答案,我只是遇到了同样的问题,并想提供一个稍长的解决方案/解释,因为乍一看我并没有得到差异:
您的问题是,PHP的$_GET
和$_POST
没有映射到HTTP GET
和POST
: 强>
$_GET
获取传递的变量via the URL parameters $_POST
获取传递的变量via the body of the request message, when the content type is application/x-www-form-urlencoded
or multipart/form-data
...无论请求是通过HTTP GET
还是POST
生成的!
您的$.ajax
测试有效,因为您通过请求正文传递了该值
你的Fiddler测试没有用,因为你通过URL参数传递了值。
因此,Fiddler有两种可能的解决方案:
通过URL传递参数,通过$_GET['id']
获取PHP中的值:
通过&#34; Request Body&#34;传递参数,使用上面提到的某种内容类型,通过$_POST['id']
获取PHP中的值: