issue retrieving ajax data
I have an issue retrieving ajax data using jquery 1.3.2 / 1.4.2:
It works with IE 7/8
It fails with FF 3.5/3.6, Chrome 5.0.375.70
The piece of jquery code is very basic:
$.get('http://myhost/someurl',function(data) {
if (data) {
alert('data is: ' + data);
} else {
alert('no data');
}
});
With all tested browsers except IE I fall into the ELSE. I compared http headers returns with IE and FF and I can't see what could cause the issue ("test" is actually the data returned by the server):
[with IE]
HTTP/1.1 200 OK
Date: Tue, 22 Jun 2010 10:01:32 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.10
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
test
[with FF]
HTTP/1.1 200 OK
Date: Tue, 22 Jun 2010 10:01:54 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
X-Powered-By: PHP/5.2.4-2ubuntu5.10
Set-Cookie: PHPSESSID=1777838b6006566fee273bd329463d57; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4
Keep-Alive: timeout=15, max=100
Connection: Keep-Al开发者_如何学编程ive
Content-Type: text/html
test
I checked with wireshark and the HTTP response is well-formed (2 x "\r\n" between last header and content). Using Firefox, if I inspect the response with HTTPwatch it shows me "test" in the content. However if I look at it with firebug I see nothing. Same behaviour with Chrome degugging tool.
Am I retarded?
Thanks.
If you're making a cross-domain request, it won't work. Cross-domain requests are not permitted as a security measure. You'll just get a null response.
I assume you're testing the page from the filesystem. If so, that's the reason it works in some browsers, since some will allow the cross-domain request to occur in that situation.
To be sure of the result of the if statement I would change your control to
if(data == "test"){..}
or test to null if needed
精彩评论