I have been relatively free recently, so I took some time to sort out some stuff about the ajax method. In projects, we often find that many problems in the ajax section are caused by the case insensitivity of attributes, methods, and events, which ultimately leads to trouble in program operation. Here we will introduce to you some common problems with the case of some common attributes, events, and methods of ajax objects. Summary
I have been relatively free recently, so I took some time to sort out some stuff about the ajax method. In projects, we often find that many problems in the ajax section are caused by the case insensitivity of attributes, methods, and events, which ultimately leads to trouble in program operation.
The following are some common properties, events and methods of ajax objects
1) The properties of standard ajax objects include readyState, status, responseText, responseXML
2) Non-standard ajax object attributes, for IE browsers, include responseBody and binary data stream. If browser compatibility is not considered, this attribute VBScript can solve the problem of garbled characters very well.
Visual Basic code
Function Bytes2BStr(vin)'二进制转字串 strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next Bytes2BStr = strreturn End Function
3) Event onreadystatechange, state transition function
4) The methods include setRequestHeader, open, and send, which are used to set the response header. When the submission method is specified as POST, the content-type needs to be set to application/x-www-form-urlencoded. If this response header is not set, The requested dynamic page cannot obtain the value in the form of key-value pairs, but the submitted data can be generated from the binary stream.
Reference
How to get the submitted content when ajax is specified as post but the content-type is not set or the key is not specified
Easy to appear Wrong question
1) For objects created using XMLHttpRequest, including IE7, attributes are strictly case-sensitive. Be sure to pay attention to the case issue. Otherwise, the attribute value will be undefined. . For example, readyState is written as readystate, and responseText is written as responsetext.
2) For IE browser, if the activexobject is judged first, then activexobject will be executed to create the xhr object. The xhr object, attributes, events and methods created by acx are not case-sensitive
3) When created using XMLHttpRequest, onreadystatechange must be all lowercase, otherwise it is equivalent to assigning a custom attribute to the xhr object instead of the actual state transition function. This way the callback is never executed. For xhr objects created by IE using activexobject, they are not case-sensitive
4) Same as points 2 and 3. When XMLHttpRequest is created, the calling method must be case-sensitive, otherwise there will be no error and a prompt that the method cannot be found. IE is not case sensitive when using activexobject.
It is particularly emphasized that the open method must be called before the setRequestHeader method can be executed, otherwise there will be no errors.
Some suggestions for handwritten ajax code
1) When submitting for get, there is no need to set content-type, unless the request is for something that needs to be checked for content-type generation Some corresponding data format files. For example, the webservice of asp.net will check the content-type. If the content-type is specified as application/json, the corresponding json format string will be generated.
2) When submitting for get, if there is no data, it is best to add a null as a parameter when calling the send method. xhr.send(null);
3) When submitting for post, be sure not to forget to call the setRequestHeader method to set the content-type to application/x-www-form-urlencoded
after calling the open method.4) When using responseText, responseXML and responseBody [IE only], the status attribute needs to be used when readyState==4, status status==200 [online testing] or status status==0 [local testing]
JavaScript code
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("microsft.xmlhttp"); xhr.open('get', 'index.html', true); xhr.onreadystatechange = function () { if (4 == xhr.readyState) { if (200 == xhr.status || 0 == xhr.status) { //=========正常返回后的处理代码 } else alert('动态页出问题了~~'); } } xhr.send(null);
5) If it is executed asynchronously, you need to add a state transition function, and then in readyState When bit 4, use the responseText or responseXML attribute.
If it is executed synchronously, you can use the responseText or responseXML attribute directly after sending. There is no need to add the onreadystatechange state transition function. However, if the network speed is slow during synchronization, it is easy to cause the browser to freeze and the user experience is not good.
6) The easiest~~hoho~~use the jquery framework instead.
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
Ajax sending and receiving requests
Ajax asynchronous loading image instance analysis
AJAX XMLHttpRequest object detailed explanation
##
The above is the detailed content of Summary of common questions about the capitalization of some common properties, events and methods of Ajax objects. For more information, please follow other related articles on the PHP Chinese website!