[英]'post method not allowed' error while sending data to php with ajax
[英]sending data to php from js via ajax post - error
我正在尝试使用ajax将数据从我的js文件传递到php文件(如下所示)。
我检查了php错误日志,发现php无法识别我通过POST发送的数据(获取“试图获取非对象的属性”错误)。
如果我在引用$ json-> func的最后一行失败的话,我也在下面发布了我的php代码。
我做对了吗? 我已经看到了一些使用jquery的post函数的示例,但是我喜欢ajax方法的成功和错误,因此我一直在坚持下去。
感谢帮助:)
js:
$.ajax({
type: "POST",
url: url,
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},
success: function(json){
//bla bla bla
}
error: function(){
//bla bla bla
}
的PHP:
<?php
header("Content-Type: application/json", true);
header("Access-Control-Allow-Origin: *");
$client_data = file_get_contents("php://input");
$json = json_decode($client_data);
switch ($json->func) {
...
dataType
是指返回的数据,而不是您如何发送数据。 因此,您的数据将在$_POST
全局变量中,并且在这种情况下,使用php:// input将无法与json_decode一起使用
所以你可以使用
$func = $_POST['func'];
$summName = $_POST['summName'];
或者,您可以尝试在jQuery ajax请求中设置content type选项(尽管我从未尝试过这样做,所以您必须对其进行测试)
$.ajax({
type: "POST",
url: url,
contentType: "application/json",
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},
如果未设置contentType
则默认为
application/x-www-form-urlencoded; charset=UTF-8
PHP自动将这种类型的请求解析为$ _GET / $ _ POST / $ _ REQUEST全局变量。 PHP本身并不知道如何自动解析发送给它的应用程序/ json请求。 因此,当要将请求数据作为json发送时,您必须自己阅读php://input
。
尝试更改:将method: "POST"
type: "POST"
method: "POST"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.