A test page would be nice so that I could test it firsthand, but my only other suggestion without seeing it for myself would be to use the X-JSON header for your error codes. If Opera or Prototype does in fact have a problem with responseText in your case, then the X-JSON header will probably still work. I played with this once and can't remember if I tested in Opera or not... It isn't really a fix but it will let you accomplish what you wanted to.  You could also use any other custom header if necessary but be aware of the header size limitations.

Colin

[EMAIL PROTECTED] wrote:
Ok i have narrowed it down,  when I make an ajax post the page im
posting to returns a header and some data.  For example if the login
was successfuly I may return the session ID or something like that
with a header of 200.  If the login failed I may return an error code
with a header of 400.  Now for some reason opera does not get a
responseText for anything except 200.  I think this is an opera only
bug as it works in every other browsers.

On Feb 2, 7:55 pm, Colin Mollenhour <[EMAIL PROTECTED]> wrote:
  
Opera 9.10 works fine with Prototype's Ajax.Request. However, in your
code it looks like you are checking for responseText inside the
onFailure function. Since that function is only called on failure, I
wouldn't expect there to be any responseText. I could be wrong since
honestly I never use the onFailure function... :-o  It sounds like maybe
what you want to use are functions for specific failure codes, like
on404, etc..

If you are still having problems, I'd check two things:

1) The server is getting the request you think it's getting and the
browser is getting the response you think it's getting. Perhaps use a
tool like SoftX HTTP Debugger (http://www.softx.org/debugger.html) to
inspect the request and response outside the scope of the browser.

2) The code executed on response isn't throwing an exception. The onXXX
functions will often give no indication if there is an error in the code
that halts execution. Use some code like this to capture those exceptions:

function getExceptionDetails(ex){
    var message =
    '<b>'+ex.name+':</b><pre>'+ex.message+'</pre><br/>'+
    (ex.fileName && ex.lineNumber ? ex.fileName+' (line
<b>'+ex.lineNumber+'</b>)<br/><br/>':'')+
    (ex.description ? 'Description:<pre>'+ex.description+'</pre><br/>':'')+
    (ex.stack ? 'Stack trace: <pre>'+ex.stack+'</pre><br/>':'')+
    (ex.number ? 'Number: '+ex.number+'<br/>':'')+
    (ex['opera#sourceloc'] ? 'Location:
<b>'+ex['opera#sourceloc']+'</b><br/>':'');
    return message;}

Ajax.Responders.register({
    onException: function(request,ex){
        new
Insertion.Bottom('debug','<hr/><br/>'+getExceptionDetails(ex)+'<br/><br/>')­;
    }

});

Colin

[EMAIL PROTECTED] wrote:
    
I have some really simple ajax code that makes a post and then reads
the result.  Now IE7 IE6 Firefox and Safari all work... however opera
returns "" for responseText.  I have tried flushing the buffer,
different head responses etc but its just doesnt return anything... is
this a possible bug in the new opera version (9.10)?
      
new Ajax.Request(window.location, {        method: "post",
postBody: "pageAction=login" + "&username=" + escape($
("username").value) + "&password=" + escape($("password").value),
onSuccess: function(e) {
document.location=document.location;
},
onFailure: function(e) {
alert("tesT:" + e.responseText);
}
      




  

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to