Home  >  Article  >  Backend Development  >  What should I do if php cannot receive ajax data?

What should I do if php cannot receive ajax data?

藏色散人
藏色散人Original
2020-07-25 10:01:563327browse

Solution to the problem that php cannot receive ajax data: 1. Add the declaration code as "Content-Type=application/x-www-form-urlencoded"; 2. Serialize it into a string according to the format agreed by both parties.

What should I do if php cannot receive ajax data?

Recommended: "PHP Tutorial"

Solution to the problem that PHP cannot receive the json value submitted by ajax Method

JS needs to specify contentType = application/x-www-form-urlencoded, so that the sent json data will be received by PHP's $_POST.

The default value of contentType in jQuery: "application/x-www-form-urlencoded" (content encoding type when sending information to the server). The default value is suitable for most cases, if you explicitly pass a content-type to $.ajax() then it will definitely be sent to the server (even if there is no data to send).

1. If you use the post method to send, there must be a statement of Content-Type = application/x-www-form-urlencoded, otherwise php will not parse the incoming data into the $_POST array.

declares a contentType = application/json, Ajax automatically adds a Content-Type = application/x-www-form-urlencoded declaration. These two statements will also make php confused.

2. The data sent is {data:jsonData}, which is a js object. Even if it can be sent successfully, PHP will not be able to parse it because it does not recognize the object. All data structures exchanged with the outside world need to be serialized into strings in the format agreed by both parties

Assume that your Js.Ajax can convert js objects into JSON format strings

And you The declaration of contentType = application/json is also removed

Then you can see the element with that JSON string as the key in $_POST

If you insist on not wanting to remove contentType = application/json The statement

Perhaps you can use file_get_contents('php://input') to get the incoming content

php://input allows reading the original data of POST. It puts less pressure on memory than $HTTP_RAW_POST_DATA and does not require any special php.ini settings. php://input cannot be used with enctype=”multipart/form-data”.

The above is the detailed content of What should I do if php cannot receive ajax data?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn