First off, I notice two problems:
- You have a syntax error in the parameter list to
$.post
- You probably don’t want to do this:
setTimeout(chatcom_load_one(id), 1000);
Here’s an updated version of your code with these errors fixed:
function chat_com_one(id) {
$('#chatcom').show('fast');
(function chatcom_load_one(id) {
$.post('sendchat2.php', {
option: 'chatcom_load_one',
tocom: id
}, function (data) {
$('#chatcom #commid #commidwin').html(data);
setTimeout(function () {
chatcom_load_one(id);
}, 1000);
});
}());
$('#chatcom_send').click(function () {
var text = document.getElementById('chatcom_text').value;
$.post('sendchat2.php', {
option: 'chat_com_send_one',
text: text,
tocom: id
},
function (data) {
document.getElementById('chatcom_text').value="";
});
});
}
Also, since you’re using jQuery, you can simplify document.getElementById...
. Another updated version (with some more changes to make it more readable):
function chat_com_one(id) {
$('#chatcom').show('fast');
(function chatcom_load_one(id) {
$.post('sendchat2.php', {
option: 'chatcom_load_one',
tocom: id
}, function (data) {
$('#commidwin').html(data);
setTimeout(function () {
chatcom_load_one(id);
}, 1000);
});
}(id));
$('#chatcom_send').click(function () {
var text = $('#chatcom_text').val();
$.post('sendchat2.php', {
option: 'chat_com_send_one',
text: text,
tocom: id
},
function (data) {
$('#chatcom_text').val('');
});
});
}
These are just a few cleanups, there may be others.
Edit:
Added devnull69’s insight to my final updated code. Hopefully it’s useful (accept his answer if this was the problem).
Edit: Other notes
Why are you doing $.post
in chatcom_load_one
? It would make much more sense as a $.get
, and the query parameters would still be sent. It’s not really a problem per se, but it’s bad style. This should probably be in a file called getchat.php
or something instead of doing what I expect is looking for the text
parameter.
Also, I don’t know the implementation of sendchat2.php
, but you should probably reduce the timeout. Try something like 250ms or so. That’s not going to overload the server and it’ll improve response time.
7
solved Why this mmediately invoked functions is not working properly