Home >Web Front-end >JS Tutorial >Analysis and solutions to the causes of failure of Jquery Ajax request file download operation
jQuery is indeed a very good lightweight JS framework, which can help us quickly develop JS applications, and to a certain extent, it has changed our habit of writing JavaScript code. This article focuses on introducing Jquery Ajax request file download. Analysis and solutions to the reasons for operation failure. Friends who are interested in the analysis of the reasons for ajax request failure will learn together.
jQuery is indeed a very good lightweight JS framework that can help us quickly develop JS Application, and to a certain extent, it has changed our habit of writing JavaScript code.
Stop talking nonsense and get straight to the point. Let’s analyze the reasons for the failure first
1. Reasons for the failure
That’s because of the response Generally, the requesting browser will process the response output by the server, such as generating png, file download, etc. However, the ajax request is only a "character type" request, that is, the requested content is stored in text type. The download of the file is in binary form. Although the returned response can be read, it is only read and cannot be executed. To put it bluntly, js cannot call the download processing mechanism and program of the browser.
2. Solution
1) You can use jquery to create a form and submit it to implement file download;
var form = $("<form>"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",rootPath + "T_academic_essay/DownloadZipFile.do"); var input1 = $("<input>"); input1.attr("type","hidden"); input1.attr("name","strZipPath"); input1.attr("value",strZipPath); $("body").append(form); form.append(input1); form.submit(); form.remove();
2) You can directly use the a tag to achieve it File download;
286342f7f56e833fdd13c13ac999fabbClick to download5db79b134e9f6b82c0b36e0489ee08ed
3) Use hidden iframe or new form to solve the problem.
PS: Use of AJAX request $.ajax method
Use jQuery's $.ajax method to control AJAX requests in more detail. It exerts a fine-grained level of control over AJAX requests.
$.ajax method syntax
$.ajax(options) | |
Parameters |
|
options |
(Object) An instance of an object whose Properties define the parameters of this operation. See table below for details. |
Return value |
XHR instance |
optionsDetailed range value
Name |
Type |
Description |
url |
String |
Requested url Address |
type |
String |
The HTTP to be used method. Usually POST or GET. If omitted, defaults to GET |
data |
object |
An object whose properties are passed as query parameters to requests. If it is a GET request, the data is passed as the query string; if it is a POST request, the data is passed as the request body. In both cases, it is the $.ajax() utility function that handles the encoding of the value |
dataType |
String |
A keyword used to identify the expected The type of data that will be returned in the response. This value determines what subsequent processing (if any) is performed before the data is passed to the callback function. Valid values are: xml - the response text is parsed into an XML document, and the resulting XML DOM is passed to the callback function html - the response text is passed to the callback function unprocessed . Any 3f1c4e4b6b16bbbd69b2ee476dc4f83a blocks within the returned HTML fragment will be evaluated json - The response text is evaluated as a JSON string, and the resulting object is passed to the callback function jsonp - Similar to json, except that remote scripting support is provided (assuming the remote server supports it) script - The response text is passed to the callback function. Before any callback function is called, the response is processed as one or more JavaScript statements text - The response text is assumed to be ordinary text. The server resource is responsible for setting the appropriate content-type response header. If this attribute is omitted, the response text is passed to the callback function without any processing or evaluation. |
timeout |
Value |
Set the timeout value (milliseconds) of the Ajax request. If the request does not complete before the timeout value expires, the request is aborted and the error callback function (if defined) is called |
global | Boolean |
Enable or disable the triggering of global functions. These functions can be attached to elements and triggered at different times or states during Ajax calls. Global function triggering is enabled by default |
#contentType |
String |
The content type to be specified on the request. Defaults to application/x-www-form-urlencoded (same as the default type used for form submission) |
success |
Function |
This function is called if the response to the request indicates a success status code. The response body is returned to this function as the first parameter and is based on the specified dataType attribute. The second parameter is a string containing the status code - in this case always the success status code |
##error | Function | This function is called if the response to the request returns an error status code. Three arguments are passed to this function: the XHR instance, the status message string (always the error status code in this case), and the exception object returned by the XHR instance (optional) |
complete | Function | Called when the request is completed. Two arguments are passed: the XHR instance and the status message string (success status code or error status code). If a success or error callback function is also specified, this function is called after the success or error callback function is called |
beforeSend | Function |
is called before making the request. This function is passed an XHR instance and can be used to set custom headers or perform other pre-request operations |
async |
Boolean |
#If false is specified, the request is submitted as a synchronous request. By default, requests are asynchronous |
processData |
Boolean |
If set to false, it prevents the passed data from being processed into URL encoding format. By default, the data is processed into URL-encoded format (applicable to requests of type application/x-www-form-urlencoded) |
##ifModified
|
Boolean | If set to true, only if the response content has not changed since the last request (according to the Last-Modified flag header) to allow the request to succeed. If omitted, no header checking is performed |
The above is the detailed content of Analysis and solutions to the causes of failure of Jquery Ajax request file download operation. For more information, please follow other related articles on the PHP Chinese website!