Home  >  Article  >  Backend Development  >  PHP determines whether a request is an ajax request or a normal request

PHP determines whether a request is an ajax request or a normal request

伊谢尔伦
伊谢尔伦Original
2016-12-02 09:44:381028browse

/path/to/pkphp.com/script.php?ajax
Use the following method to determine in the php script:
The code is as follows:
if(isset($_GET['ajax'])) {
...This is An ajax request, then...
}
else {
...This is not an ajax request, then...
}

The judgment of the web page request is simply realized by passing the _GET parameter. But if you need such a function, this method may have drawbacks. The functional requirements are as follows:
1. The content of the web page requested through ajax is different from the content of the web page requested through ordinary requests
2. The web page requested through ajax is for the convenience of user operations. The required content of the web page requested by the two methods is the same, except that the content of the web page requested by ajax is relatively simplified and used, and the large frame template of the web page is removed.
3. The purpose of this is: when the user operates the web page through ajax, and when the search engine accesses the web page (equivalent to opening the web page normally), the content obtained is a complete web page (including the large frame template of the web page).
To complete the above function, you cannot use the GET parameter passing introduced earlier to judge. If you use GET passing to judge, the user ajax request and the ordinary web page request will have the same content, because you cannot provide a link. Set a URL with and without ajax judgment parameters. So how can we implement this function? This problem must be solved through server-side PHP judgment. That is, today I will talk about how PHP judges ajax requests. There is a prerequisite for solving this problem, that is, the ajax framework you use must be jquery. In the jquery framework, when requesting web content through its $.ajax, $.get, or $.post method, it will pass an HTTP_X_REQUESTED_WITH parameter to the server. You can use the following method to determine whether a request is an ajax request or an ajax request. Ordinary request:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
.. This is an ajax request, then...
}
else {
..This is not an ajax request, then...
}
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')if( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH
{
...This is an ajax request, then...
}
else {
...This is not an ajax request, then ...
}
Using this to perform judgment operations can keep the URLs on the web page consistent, but can obtain web pages with different content for two different requests, which achieves user operation optimization without affecting search engine inclusion. , I think it is a great solution!
Another issue to note here is that if your jquery request opens the web page through an iframe, the HTTP_X_REQUESTED_WITH parameter will not be passed, which means you have no way to determine the request. Type.

The main content is:

1.
There is a prerequisite for solving this problem, that is, the ajax framework you use must be jquery. In the jquery framework, for $.ajax, $.get. , or $.post method when requesting web content, it will pass an HTTP_X_REQUESTED_WITH parameter to the server. You can use the following method to determine whether a request is an ajax request or a normal request:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{

2.
There is another issue that needs attention, that is, if your jquery request opens the web page through an iframe, then the HTTP_X_REQUESTED_WITH parameter does not will be passed, which means you have no way to determine the type of request.

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