Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
角度后到PHP_Php_Json_Angular - Fatal编程技术网

角度后到PHP

角度后到PHP,php,json,angular,Php,Json,Angular,我正在尝试将数据从Angular发布到PHP 角度Post请求 var body = { "action":"getvouchernumber","vouchertype": vtype, "vmonth": vmonth, "vyear":vyear }; return this.http.post(this.BaseURI+'voucherprocessing.php',body); 输出如

我正在尝试将数据从Angular发布到PHP

角度Post请求

var body = { "action":"getvouchernumber","vouchertype": vtype, "vmonth": vmonth, "vyear":vyear };
return this.http.post(this.BaseURI+'voucherprocessing.php',body);
输出如开发者模式的网络选项卡所示

PHP页面上的标题

header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
用PHP获取数据

$data = file_get_contents("php://input");
输出

但当我尝试获取对象的任何值并将其设置为变量时,它就不起作用了

$action = $data->action
我也试过了

json_decode(file_get_contents("php://input"));
但这也会返回一个错误

为了回应@Tiago的帖子,我添加了json_decode($data,true),并尝试通过$data->action获取值,结果如下

文本字段中的值正确,但显示为错误


如果我不向json_decode添加第二个参数,它仍然返回null。PHP版本是5.6.31

请尝试通过var_dump($data)转储PHP中的数据变量,通过在控制台中查看响应,查看您是否能够正确接收PHP中的数据。
检查是否能够在angular上正确编码formData,并使用this.\u http.post(“voucherprocessing.php”,formDataVariable)提交表格。

此外,可能会发生相对路由,因为angular有自己的设置路由的方法,所以您的文件可能无法工作,请使用绝对路由,如“http://localhost/path/to/your/php/file“

尝试通过var_dump($data)转储php中的数据变量,通过在控制台中查看响应,查看是否能够正确接收php中的数据。
检查是否能够在angular上正确编码formData,并使用this.\u http.post(“voucherprocessing.php”,formDataVariable)提交表格。
此外,可能会发生相对路由,因为angular有自己的设置路由的方法,所以您的文件可能无法工作,请使用绝对路由,如“http://localhost/path/to/your/php/file“

由于安全原因(每个人都可以访问Angular代码),Angular不直接与数据库通信。相反,它使用HTTP请求和对服务器/API(REST、GraphQL)的HTTP响应,该服务器/API可以使用PHP构建(就像在您的例子中一样),但也可以使用NodeJS。然后,这个API可以与数据库交互(也可以做一些不同的事情,比如简单地上传文件)

当涉及到REST API的HTTP请求时,需要注意的是,我们需要知道URL(API端点)、我们想要使用的HTTP动词(在本例中为POST),还可以发送头({“Content Type”:“application/json”)和正文(发送一些信息-注意,使用HTTP动词GET是不可能的)

在本例中,您使用的是's post()方法将数据发送到服务器。将假定您有正确的URL作为第一个参数,并且还可以在第二个参数中看到正文

因此,现在问题只能发生在PHP端

$postdata = file_get_contents("php://input");
由于这些数据是JSON格式的,并且PHP无法识别JSON数据,因此需要将其提取/转换为数组

$request = json_decode($postdata, TRUE);
所以现在应该是直截了当的PHP数组。当然,您可以在整个过程中设置条件/验证,以确保这些变量($postdata和$request)始终保存数据或给出特定错误

在您对此答案的评论中,您提到$request返回null,您可以从中了解更多信息。

由于安全原因(每个人都可以访问Angular代码),Angular不直接与数据库通信。相反,它使用HTTP请求和对服务器/API的HTTP响应(REST,GraphQL)它可以使用PHP构建(就像您的例子),但也可以使用NodeJS。然后,这个API可以与数据库交互(也可以做一些不同的事情,比如简单地上传文件)

当涉及到REST API的HTTP请求时,需要注意的是,我们需要知道URL(API端点)、我们想要使用的HTTP动词(在本例中为POST),还可以发送头({“Content Type”:“application/json”)和正文(发送一些信息-注意,使用HTTP动词GET是不可能的)

在本例中,您使用的是's post()方法将数据发送到服务器。将假定您有正确的URL作为第一个参数,并且还可以在第二个参数中看到正文

因此,现在问题只能发生在PHP端

$postdata = file_get_contents("php://input");
由于这些数据是JSON格式的,并且PHP无法识别JSON数据,因此需要将其提取/转换为数组

$request = json_decode($postdata, TRUE);
所以现在应该是直截了当的PHP数组。当然,您可以在整个过程中设置条件/验证,以确保这些变量($postdata和$request)始终保存数据或给出特定错误


在您对此答案的评论中,您提到$request返回null,您可以从中了解更多信息。

var\u dump返回错误文本:↵C:\wamp\www\hakacc\voucherprocessing.php:23:string'{“action”:“getvouchernumber”,“vouchertype”:“CV”,“vmonth”:“09”,“vyear”:2020}(长度=75)↵" 路径已经是绝对路径,但r\u dump返回错误文本:↵C:\wamp\www\hakacc\voucherprocessing.php:23:string'{“action”:“getvouchernumber”,“vouchertype”:“CV”,“vmonth”:“09”,“vyear”:2020}(长度=75)↵“路径在Angular中已经是绝对的了,谢谢您的友好和详细的回复。正如在原始帖子中分享的,我使用的URL是正确的,这就是为什么在控制台中回显文件\u get\u内容显示值的原因。但是我无法将这些值设置为任何变量。我也尝试过使用json\u decode,就像我提到的那样,但结果是空的。c是什么我做错了吗?@SaadBashir这可能是Peka提到的特殊字符编码。我没有看到任何特殊字符,因为这是问题所在。但是,我告诉我们