I am currently writing a chatprogram, and it works fine in FF but it doesnt refresh as it should every 1500ms (set with setInterval("retrieve_messages()",1500) in body tag) in IE. The object ajax is made in previous code.

I wrote the following code:

function retrieve_messages() {
    // Checks wether the object is available:
    if (ajax) {
        ajax.open('get', 'messageretrieve.php');

        // Sends request

        // Function that handles response
        ajax.onreadystatechange = setTimeout("show_messages()", 500);

    } else { // AJAX is not useable
        document.getElementById('warning').innerHTML = 'It is not possible to connect, please update your browser.';

} // End of retrieve_messages()
// Function that shows the returned text into the messagebox
function show_messages() {
    // If everything is OK:
    if ( (ajax.readyState == 4) && (ajax.status == 200) ) {
        // Returns the value to the document
        document.getElementById('messagebox').innerHTML = ajax.responseText;

} // End of function show_messages()

IE says that there is something not implemented on line 9 (ajax.onreadystatechange=.....), could somebody help me out?


EDIT: I am currently going to bed, i will be back tomorrow.


ajax.onreadystatechange = function(){setTimeout("show_messages()", 500);}

It is also good practise to establish the response handler before sending the request, so put lines 9/10 above 6/7.


commented: Good support, clear explaination. +1

Ok thank you, it worked :). But i also have another question, i have a small problem with my chat-program: if the users presses enter it will reload and it will log out due to the onunload="leave_chat()" part. But if i delete the form i cant referer to the text input and as so cant retrieve the value typed in the textbox.


<body onload="setInterval('retrieve_users()', 1500); setInterval('retrieve_messages()', 1500)" onunload="leave_chat()">
.... not relevant HTML
 <form method="post" name="sendform" action="defaultchat.php">
  <input type='text' name='textbox' id='textbox' maxlength='255' size='75' /><input type='button' value='Send Message' onclick='send_message()' />


You need to suppress the form's natural tendency to want to be submitted when a field has focus and user hits enter. That's fairly simple to cure because the form (as far as I can see) never needs to be submitted. Two options immediately come to mind:

1. Reduce the <form ...> tag to <form>, and call send_message with onclick='send_message(this.form.textbox.value)' to make the user-entered text available as an argument to the function.

2. Leave the form tag in place but change it to :

<form name="sendform" onsubmit="return false;">

onsubmit="return false;" ensures that the form will not be submitted, whilst your button's onclick="send_message()" will still work.

Goood luck


Thanks for help, I completed the chat-program and it works perfectly.

Thread Solved :)