Connecting Tech Pros Worldwide Forums | Help | Site Map

Doesn't execute Javascript when called using ajax

Newbie
 
Join Date: Aug 2008
Posts: 8
#1: Aug 22 '08
Hi,
What I am trying here is that from my first file I am making a call to handler.php file
//////////////////////////////FirstFile////////////////////////
[HTML]<html>
<head>
<script src='jquery-1.1.3.1.pack.js' type='text/javascript'></script>
<script type='text/javascript'>
$.post("http://practice.dev/handler.php",
function(data)
{
alert(data);
//document.write(data);
$("#test").append(data);
$("#test").html(data);
});
</script>
</head>
<body>
<div id='test'>
</div>
</body>
</html>[/HTML]

////////////////////////handler.php/////////////////
Expand|Select|Wrap|Line Numbers
  1. <?php
  2. echo 'here';
  3. ?>
Expand|Select|Wrap|Line Numbers
  1. <script type='text/javascript'>
  2. alert('hello');
  3. </script>
  4.  
////////////////////////////////////////////////////////////

Now in firefox it is working fine means it show's alert saying hello, but when I try in IE it doesn't but if in callback function instead of using append/prepend/ html, if I use document.write(data) then it runs the javascript means it display hello message in IE 7.

Anything I am doing wrong ? IE sucks plz help help help ?

RamananKalirajan's Avatar
Needs Regular Fix
 
Join Date: Mar 2008
Location: Chennai - India
Posts: 350
#2: Aug 22 '08

re: Doesn't execute Javascript when called using ajax


Just run that file with the help of a server. It will work fine. In IE the functionslitites are written like that. Place your code within a server and run it, it will work.

Regards
Ramanan Kalirajan
Newbie
 
Join Date: Aug 2008
Posts: 8
#3: Aug 22 '08

re: Doesn't execute Javascript when called using ajax


Thanks for quick reply

Run from server ? Yes, I am running it on apache server. sure there is some other catch to it.

help help
RamananKalirajan's Avatar
Needs Regular Fix
 
Join Date: Mar 2008
Location: Chennai - India
Posts: 350
#4: Aug 22 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by perdeepOsingh

Thanks for quick reply

Run from server ? Yes, I am running it on apache server. sure there is some other catch to it.

help help

Instead of append just try using insert, or update. I am not very familiar about this. Just trial and error method. this is my suggestion not the solution.

Regards
Ramanan Kalirajan
gits's Avatar
Moderator
 
Join Date: May 2007
Location: Munich, Germany
Posts: 4,136
#5: Aug 22 '08

re: Doesn't execute Javascript when called using ajax


are both files, the html and the php on the same server and do you test from there, or from a local file?
Newbie
 
Join Date: Aug 2008
Posts: 8
#6: Aug 24 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by gits

are both files, the html and the php on the same server and do you test from there, or from a local file?

both files on same server: Yes,
Test from server: Yes

Plz help help ...
RamananKalirajan's Avatar
Needs Regular Fix
 
Join Date: Mar 2008
Location: Chennai - India
Posts: 350
#7: Aug 25 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by perdeepOsingh

both files on same server: Yes,
Test from server: Yes

Plz help help ...

Hi, wether you are using Prototype Js Framework

[HTML]$.post("http://practice.dev/handler.php",
function(data)
{
alert(data);
//document.write(data);
$("#test").append(data);
$("#test").html(data);
});[/HTML]

This code seems to be jQuery. I am confused with the URl u had given. I think the problem in ur code may be with the URL ("http://practice.dev/handler.php"). Just check that once. Just visit this site tio know more www.jquery.com

Regards
Ramanan Kalirajan
Newbie
 
Join Date: Aug 2008
Posts: 8
#8: Aug 25 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by RamananKalirajan

This code seems to be jQuery. I am confused with the URl u had given. I think the problem in ur code may be with the URL ("http://practice.dev/handler.php"). Just check that once. Just visit this site tio know more www.jquery.com

Regards
Ramanan Kalirajan

Hi Ramanan Kalirajan,
Thanks for reply. Yes it is jquery call [not sure but my understanding is jquery is AJAX correct me if I am wrong.]. Well URL is right and it's my local server virtual host. And yes it's returning the result from handler.php, if we concentrate on my first post with question the only problem is how IE handle javascript in firefox it's working it's executing the javascript written in handler.php but in IE it only works if I use document.write(data).
RamananKalirajan's Avatar
Needs Regular Fix
 
Join Date: Mar 2008
Location: Chennai - India
Posts: 350
#9: Aug 25 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by perdeepOsingh

Hi Ramanan Kalirajan,
Thanks for reply. Yes it is jquery call [not sure but my understanding is jquery is AJAX correct me if I am wrong.]. Well URL is right and it's my local server virtual host. And yes it's returning the result from handler.php, if we concentrate on my first post with question the only problem is how IE handle javascript in firefox it's working it's executing the javascript written in handler.php but in IE it only works if I use document.write(data).

See what u are saying I am agreeing that. But the basic thing u must understand that each browser has their own implementation logic. This we call as Browser Compatibility problem. i am working in Prototype JS Framework.

in IE, $('myBut').readAttribute('value') --> this will be working but the same doesn't works on Mozilla.

were as the code $('myBut').'value will work on both the IE and Mozilla. You have to find out the place were u had gone wrong. For me, it seems to be in the URl part u have specified http://... as it was a localhost u have to give the project workpath or some original path were the file actually placed it will work. Just try it out. i am new to JQuery.

Regards
Ramanan Kalirajan
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,581
#10: Aug 25 '08

re: Doesn't execute Javascript when called using ajax


To run JavaScript, you'll need to eval it or add it to the page via script elements.

In jQuery, you'll probably have to use the $.ajax function instead of the simplified $.post function.

PS. Don't use document.write after the page has loaded - it should only be used during page load.

PPS. jQuery is not only for Ajax.
Newbie
 
Join Date: Aug 2008
Posts: 8
#11: Aug 26 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by acoder

To run JavaScript, you'll need to eval it or add it to the page via script elements.

In jQuery, you'll probably have to use the $.ajax function instead of the simplified $.post function.

PS. Don't use document.write after the page has loaded - it should only be used during page load.

PPS. jQuery is not only for Ajax.

Thanks acoder, you nailed it. I was researching it and found exactly what you saying. Yes document.write will screw things up as I will lose current content of my page. True jQuery is so much more like design and other stuff. Ok now I got this idea that i have to eval(data) but now i got new problem. the content of data is something like somehtml.....morehtml .............now <script type='....>alert('hello')...</script>.....somemorehtml.

now if data is just javascript than eval is working but as I have html + javascript any suggestion how to tackle this.

Thanks
Newbie
 
Join Date: Aug 2008
Posts: 8
#12: Aug 26 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by RamananKalirajan

See what u are saying I am agreeing that. But the basic thing u must understand that each browser has their own implementation logic. This we call as Browser Compatibility problem. i am working in Prototype JS Framework.

in IE, $('myBut').readAttribute('value') --> this will be working but the same doesn't works on Mozilla.

were as the code $('myBut').'value will work on both the IE and Mozilla. You have to find out the place were u had gone wrong. For me, it seems to be in the URl part u have specified http://... as it was a localhost u have to give the project workpath or some original path were the file actually placed it will work. Just try it out. i am new to JQuery.

Regards
Ramanan Kalirajan

Hi Ramanan,
Thanks mate for explaining the browser compatibility. I appreciate it, but i think acoder is making more sense of my problem. Might I didn't managed to explain you my prob. I appreciate your help and effort. Still you can help me but in the direction acoder and me are going.

Thanks
RamananKalirajan's Avatar
Needs Regular Fix
 
Join Date: Mar 2008
Location: Chennai - India
Posts: 350
#13: Aug 26 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by perdeepOsingh

Hi Ramanan,
Thanks mate for explaining the browser compatibility. I appreciate it, but i think acoder is making more sense of my problem. Might I didn't managed to explain you my prob. I appreciate your help and effort. Still you can help me but in the direction acoder and me are going.

Thanks

Sure, I will be there in the forum trying to help u out.

Regards
Ramanan Kalirajan
Newbie
 
Join Date: Aug 2008
Posts: 8
#14: Aug 26 '08

re: Doesn't execute Javascript when called using ajax


Thanks everyone for helping me on this topic. I figured it out and come up with solution
Expand|Select|Wrap|Line Numbers
  1. if($.browser.msie)
  2.     {
  3.         try{
  4.             var re =/((<[\s\/]*script\b[^>]*>)([^>]*)(<\/script>))/i;
  5.             var match;
  6.             if(match = re.exec(data)) {
  7.                     eval(match[3]);
  8.             }
  9.         }
  10.         catch(error){
  11.             alert(error);
  12.         }
  13.     }
  14.  
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,581
#15: Aug 26 '08

re: Doesn't execute Javascript when called using ajax


The reg. exp. looks OK, but why are you using browser detection?
Newbie
 
Join Date: Aug 2008
Posts: 8
#16: Aug 28 '08

re: Doesn't execute Javascript when called using ajax


Quote:

Originally Posted by acoder

The reg. exp. looks OK, but why are you using browser detection?

I am using browser detection because I don't want to run this bit of code for other browser as on other browser there was no problem so I don't wanted to do anything unnecessary. I want to make sure just to fix this bug without creating ripple in other things.

Cheers
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,581
#17: Aug 28 '08

re: Doesn't execute Javascript when called using ajax


You should avoid browser detection if at all possible. See why. If the code works in other browsers too, then use it in all browsers.
Reply