Home >Web Front-end >JS Tutorial >Why are my AngularJS HTTP POST parameters undefined in PHP?
AngularJS HTTP Post to PHP: Understanding "Undefined" Values
Many AngularJS users encounter an issue when sending POST requests to PHP, resulting in "undefined" values for POST parameters. This article dives into the root cause and provides solutions to resolve this problem.
Content-Type Header Default
The root of this issue lies in the default "Content-Type" header used by AngularJS for HTTP POST requests. By default, AngularJS sets this header to "application/json," indicating that the request body should be serialized as JSON data.
Form-Encoded Data vs. JSON
However, if your PHP code expects form-encoded data (i.e., data in the format "fieldname=value&fieldname=value"), it will not be able to populate the $_POST array properly. To resolve this, you can either change your PHP script to read the raw input stream as JSON or adjust your AngularJS code to send form-encoded data.
Solution 1: Read Raw Input as JSON in PHP
This solution involves modifying your PHP code to read the raw input data as JSON, deserialize it, and extract the POST values manually. You can do this using the following code:
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Solution 2: Send Form-Encoded Data from AngularJS
If you prefer to use the $_POST functionality in PHP, you can manually create a query string and send it as the data in your AngularJS request. The query string should be in the format "fieldname=value&fieldname=value," and it should be URL-encoded. You can use encodeURIComponent() in JavaScript to ensure proper encoding.
The above is the detailed content of Why are my AngularJS HTTP POST parameters undefined in PHP?. For more information, please follow other related articles on the PHP Chinese website!