通过ajax发送数据到js后的php - error
我想通过使用ajax将数据从我的js文件传递到php文件(如下图所示)。通过ajax发送数据到js后的php - error
我检查了PHP错误日志,看到我通过POST发送的数据无法被PHP识别(正在尝试获取非对象的属性错误)。
如果在最后一行失败,当我引用$ 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://输入不会在这种情况下,与json_decode工作
所以,你既可以使用
$func = $_POST['func'];
$summName = $_POST['summName'];
或者你可以尝试设置在您的jQuery Ajax请求的内容类型选项(虽然我从来没有尝试过这个,所以你将不得不测试它)
$.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
。
这是行得通的。谢谢! 虽然,那和php://输入有什么区别? 我在使用$ http之前使用过php://输入角度... – Mapisto
查看已更新的答案,至于它使用角度,它可以通过检测您传递的数据对象的类型自动设置内容类型标题$ HTTP –
尝试改变:type: "POST"
到method: "POST"
'type'是'method'的别名。 –
我想你想在你的'php'中是'$ _POST'? – roullie
试试'$ json - > {'func'}'。 – icecub
'data:JSON.stringify({func:'getSummId',summName:summonerName}),' –