There are many ajax request methods in jquery, but $. ajax, $. get, or $. post, and it can be in json, html, txt, and other formats. In this way, we need to determine whether the HTTP_X_REQUESTED_WITH request sent by php Based on ajax is an ajax request, then, the request in that format is determined based on the $ _ SERVER [HTTP_ACCEPT] Check. There are many ajax request methods in jquery, but $. ajax, $. get, or $. post, and it can be in json, html, txt, and other formats. In this way, we need to determine whether the HTTP_X_REQUESTED_WITH request sent by php Based on ajax is an ajax request, then, based on the $ _ SERVER [\ 'HTTP _ ACCEPT \ '] Check, the request is in that format.
Script ec (2); script
In php, an ajax request is determined at the header layer. The corresponding result is determined by $ _ SERVER ['HTTP _ X_REQUESTED_WITH.
The Code is as follows: |
|
/** * Whether the current request is an ajax request * * @ Access public * @ Return bool */ Function isAjax () { Return isset ($ _ SERVER ['HTTP _ X_REQUESTED_WITH ']) & strtolower ($ _ SERVER ['HTTP _ X_REQUESTED_WITH']) = 'xmlhttprequest '; } |
Generally, $ _ SERVER ['HTTP _ X_REQUESTED_WITH '] Is XMLHttpRequest by default.
Ajax cross-origin can only specify data in the jsonp format. This is not an XMLHttpRequest object. Even if you customize a $ _ SERVER ['HTTP _ X_REQUESTED_WITH '], it is meaningless.
Solution:
Getjson or ajax (jsonp) for cross-origin requests can be determined using the ACCEPT Request Header Format.
PHP end corresponds to $ _ SERVER ['HTTP _ ACCEPT ']
Jsonp requests are generally text/javascript, application/javascript ,*/*
Json request: application/json, text/javascript ,*/*
A simple cross-origin ajax request:
The Code is as follows: |
|
Switch ($ _ SERVER ['HTTP _ ACCEPT ']) { Case 'application/json, text/javascript ,*/*': // JSON format Break; Case 'text/javascript, application/javascript ,*/*': // Javascript or JSONP format Break; Case 'text/html ,*/*': // HTML format Break; Case 'application/xml, text/xml ,*/*': // XML format Break; } |