By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,252 Members | 1,684 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,252 IT Pros & Developers. It's quick & easy.

Doesn't execute Javascript when called using ajax

P: 8
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 ?
Aug 22 '08 #1
Share this Question
Share on Google+
16 Replies


RamananKalirajan
100+
P: 607
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
Aug 22 '08 #2

P: 8
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
Aug 22 '08 #3

RamananKalirajan
100+
P: 607
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
Aug 22 '08 #4

gits
Expert Mod 5K+
P: 5,390
are both files, the html and the php on the same server and do you test from there, or from a local file?
Aug 22 '08 #5

P: 8
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 ...
Aug 24 '08 #6

RamananKalirajan
100+
P: 607
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
Aug 25 '08 #7

P: 8
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).
Aug 25 '08 #8

RamananKalirajan
100+
P: 607
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
Aug 25 '08 #9

acoder
Expert Mod 15k+
P: 16,027
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.
Aug 25 '08 #10

P: 8
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
Aug 25 '08 #11

P: 8
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
Aug 25 '08 #12

RamananKalirajan
100+
P: 607
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
Aug 26 '08 #13

P: 8
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.  
Aug 26 '08 #14

acoder
Expert Mod 15k+
P: 16,027
The reg. exp. looks OK, but why are you using browser detection?
Aug 26 '08 #15

P: 8
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
Aug 28 '08 #16

acoder
Expert Mod 15k+
P: 16,027
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.
Aug 28 '08 #17

Post your reply

Sign in to post your reply or Sign up for a free account.