通过ajax发送数据到js后的php - error

通过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) { 
     ... 
+1

我想你想在你的'php'中是'$ _POST'? – roullie

+0

试试'$ json - > {'func'}'。 – icecub

+0

'data:JSON.stringify({func:'getSummId',summName:summonerName}),' –

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

+0

这是行得通的。谢谢! 虽然,那和php://输入有什么区别? 我在使用$ http之前使用过php://输入角度... – Mapisto

+0

查看已更新的答案,至于它使用角度,它可以通过检测您传递的数据对象的类型自动设置内容类型标题$ HTTP –

尝试改变:type: "POST"method: "POST"

+1

'type'是'method'的别名。 –